jQuery 切换 Fahrenheit/Celsius
jQuery Toggle Fahrenheit/Celsius
我正在尝试使用 Open Weather Map API 创建一个天气应用程序。我想创建一个按钮,让您可以在华氏温度和摄氏温度之间切换。我几乎什么都试过了,但我又回到了我在尝试放入按钮之前编写的代码。
我如何使用我当前的设置实现它?
<div class="container">
<div class="jumbotron text-center"
style="background-color: #00F0F8FF; font-family: 'Oswald', sans-
serif; color: black;">
<h1>Local Weather App</h1>
<h2><span id="town"></span></h2>
<h2>Temperture: <span id="temp"></span></h2>
<div id="weatherIconBox"></div>
<h2><span id="weatherType"></span></h2>
<button type="submit" id="btn1">F°</button>
<button type="submit" id="btn2">C°</button>
</div>
</div>
var getIP = 'http://ip-api.com/json/';
var openWeatherMap = 'http://api.openweathermap.org/data/2.5/weather'
$.getJSON(getIP).done(function(location) {
$.getJSON(openWeatherMap, {
lat: location.lat,
lon: location.lon,
units: "imperial",
}).done(function(data) {
$('#town').html(data.name);
$('#temp').prepend(Math.floor(data.main.temp) + '°');
$('#weatherType').html(data.weather[0].description).css('textTransform', 'capitalize');
$('#weatherIconBox').prepend('<img id="weatherIcon" src="http://openweathermap.org/img/w/' + data.weather[0].icon + '.png"/>');
});
});
我还使用 API 创建了一个辅助项目。
你能试试这个吗?默认情况下以华氏温度显示数据。当您单击 Celcius 切换按钮时。做一个简单的数学计算。我认为等式是 ((f + 40) ÷ 1.8) − 40 = c。然后显示这个值。
当您单击“#temp”元素时,此代码将在摄氏度和华氏度之间切换文本
var cToF = function(c) {
return (c * (9/5)) + 32;
};
var fToC = function(f) {
return (f - 32) * (5/9);
};
$("#temp").on("click", function() {
var isF = $(this).data("units") === "f";
var oldTemp = $(this).text();
var newTemp = isF ? fToC(oldTemp) : cToF(oldTemp);
$(this).text(newTemp);
var newUnits = isF ? "c" : "f";
$(this).data("units", newUnits).attr("data-units", newUnits);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Temperature: <span id="temp" data-units="f">100</span></h2>
<h2>Temperture: <span id="temp"></span></h2>
注意数学计算...
您必须应用正确的公式!
这是一个简单的切换按钮,用于计算。
var temp = "c";
var tempEl = $('#temp');
$("#tempToggle").on("click",function(){
// Get actual shown temperature
var tempVal = parseFloat(tempEl.val());
if(temp=="f"){
temp="c";
// Calculate
var converted = (tempVal-32)/(9/5);
// Set
tempEl.val(converted.toFixed(1));
$(this).html("C°");
}else{
temp="f";
// Calculate
var converted = (tempVal*1.8)+32;
// Set
tempEl.val(converted.toFixed(1));
$(this).html("F°");
}
});
#temp{
width:3.2em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="temp" value="20.5">
<button type="button" id="tempToggle">C°</button>
我正在尝试使用 Open Weather Map API 创建一个天气应用程序。我想创建一个按钮,让您可以在华氏温度和摄氏温度之间切换。我几乎什么都试过了,但我又回到了我在尝试放入按钮之前编写的代码。
我如何使用我当前的设置实现它?
<div class="container">
<div class="jumbotron text-center"
style="background-color: #00F0F8FF; font-family: 'Oswald', sans-
serif; color: black;">
<h1>Local Weather App</h1>
<h2><span id="town"></span></h2>
<h2>Temperture: <span id="temp"></span></h2>
<div id="weatherIconBox"></div>
<h2><span id="weatherType"></span></h2>
<button type="submit" id="btn1">F°</button>
<button type="submit" id="btn2">C°</button>
</div>
</div>
var getIP = 'http://ip-api.com/json/';
var openWeatherMap = 'http://api.openweathermap.org/data/2.5/weather'
$.getJSON(getIP).done(function(location) {
$.getJSON(openWeatherMap, {
lat: location.lat,
lon: location.lon,
units: "imperial",
}).done(function(data) {
$('#town').html(data.name);
$('#temp').prepend(Math.floor(data.main.temp) + '°');
$('#weatherType').html(data.weather[0].description).css('textTransform', 'capitalize');
$('#weatherIconBox').prepend('<img id="weatherIcon" src="http://openweathermap.org/img/w/' + data.weather[0].icon + '.png"/>');
});
});
我还使用 API 创建了一个辅助项目。
你能试试这个吗?默认情况下以华氏温度显示数据。当您单击 Celcius 切换按钮时。做一个简单的数学计算。我认为等式是 ((f + 40) ÷ 1.8) − 40 = c。然后显示这个值。
当您单击“#temp”元素时,此代码将在摄氏度和华氏度之间切换文本
var cToF = function(c) {
return (c * (9/5)) + 32;
};
var fToC = function(f) {
return (f - 32) * (5/9);
};
$("#temp").on("click", function() {
var isF = $(this).data("units") === "f";
var oldTemp = $(this).text();
var newTemp = isF ? fToC(oldTemp) : cToF(oldTemp);
$(this).text(newTemp);
var newUnits = isF ? "c" : "f";
$(this).data("units", newUnits).attr("data-units", newUnits);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Temperature: <span id="temp" data-units="f">100</span></h2>
<h2>Temperture: <span id="temp"></span></h2>
注意数学计算...
您必须应用正确的公式!
这是一个简单的切换按钮,用于计算。
var temp = "c";
var tempEl = $('#temp');
$("#tempToggle").on("click",function(){
// Get actual shown temperature
var tempVal = parseFloat(tempEl.val());
if(temp=="f"){
temp="c";
// Calculate
var converted = (tempVal-32)/(9/5);
// Set
tempEl.val(converted.toFixed(1));
$(this).html("C°");
}else{
temp="f";
// Calculate
var converted = (tempVal*1.8)+32;
// Set
tempEl.val(converted.toFixed(1));
$(this).html("F°");
}
});
#temp{
width:3.2em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="temp" value="20.5">
<button type="button" id="tempToggle">C°</button>