我使用Openweathermap API構建天氣應用程序。該應用程序已經工作,但我有溫度轉換器仍然無法正常工作的問題。使用openweathermap API進行溫度轉換
這裏是我的HTML:
<div class='valign col s6 text-style'>
<div id="iconTemp">
<div id="icon"></div>
<div id="temp"></div>
</div>
<div class='divider'></div><br>
<div class="text-style-details">
<div class="location"></div>
<div id="conditions"></div>
<div id="wind"></div>
</div>
</div>
而且我的javascript:
<script type="text/javascript">
function ToC() {
var strIn = parseInt(temperature);
if(isNaN(strIn)) {
alert("Not a Number");
} else {
var f = parseFloat(strIn);
var c = (f - 32) * 5/9;
var r = Math.round(c * 100)/100;
parseInt(temperature) = r.toString();
}
}
function ToF() {
var strIn = parseFloat((temperature).toFixed(1));
if(isNaN(strIn)) {
alert("Not a Number");
} else {
var c = parseFloat(strIn);
var f = (c * 9/5) + 32;
var r = Math.round(f * 100)/100;
parseFloat((temperature).toFixed(1)) = r.toString();
}
}
$(document).ready(function() {
getLocationData();
function getLocationData() {
$.get("http://ipinfo.io", function(location) {
console.log(location);
$('.location')
.append(location.city + ", ")
.append(location.region);
var units = getUnits(location.country);
getWeatherData(location.loc, units);
}, "jsonp");
}
function getWeatherData(loc, units) {
lat = loc.split(",")[0]
lon = loc.split(",")[1]
var appid = "&APPID=123456abcde"
var url = 'http://api.openweathermap.org/data/2.5/weather?lat=' + lat + '&lon=' + lon + "&units=" + units + appid;
console.log(url);
$.get(url, function(weather) {
var windDir = WindDirection(weather.wind.deg);
var temperature = weather.main.temp;
var unitLabel;
if (units === "imperial") {
unitLabel = "<a href='#'>F</a>/<a href='#' onclick='ToC()'>C</a>";
// temperature = parseFloat((temperature).toFixed(1));
} else {
unitLabel = "<a href='#' onclick='ToF()'>C</a>";
// temperature = parseInt(temperature);
}
// temperature;
// temperature = parseInt(temperature);
// temperature = parseFloat((temperature).toFixed(1));
console.log(weather);
$('#icon')
// .append("<img src='http://openweathermap.org/img/w/" + weather.weather[0].icon + ".png'>");
.append("<i class='wi wi-owm-"+weather.weather[0].id+"'></i>");
// <i class="wi wi-owm-200"></i>
$('#temp').append(temperature + "° " + unitLabel);
$('#conditions').append(weather.weather[0].description);
$('#wind').append(windDir + " " + weather.wind.speed + " knots");
}, "jsonp");
};
function WindDirection(dir) {
var rose = ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'];
var eightPoint = Math.floor(dir/45);
return rose[eightPoint];
}
function getUnits(country) {
var imperialCountries = ['US', 'ID', 'SG', 'MY', 'BS', 'BZ', 'KY', 'PW'];
if (imperialCountries.indexOf(country) === -1) {
var units = 'metric';
} else {
units = 'imperial';
}
console.log(country, units);
return units;
}
});
</script>
的應用PICT:
我創建功能TOC(轉換F到C)和ToF(將C轉換爲F),當我點擊標籤時,我收到一條錯誤消息「Uncaught ReferenceError:ToC is not defined」。當我點擊C(celcius)和F(華氏度)時,我希望應用程序溫度值會發生變化。
任何幫助將不勝感激,謝謝。
您似乎正在定義'ToC'函數_inside_ $'.get(url,function(weather){...'ajax callback)。您需要將其移出,以便在全局範圍內進行定義和提供。 – jszobody
你的'ToC'和'ToF'函數只在'$ .get'處理函數的範圍內已知。你可以將它們移動到那裏 - 你甚至可以將它們移動到$(document).ready(function(){')之上。然後,你需要將溫度傳遞給函數,或者你可以添加一個自定義的數據'屬性到你的''元素並且與之一起工作(給你的錨點一個唯一的ID,這樣你就可以很容易地訪問它們) –
我已經從'$ .get'作用域中移除了函數,如何將_temperature_傳遞給函數?我得到一個錯誤_「溫度未定義」_。如果你不介意你會給我一個自定義的'data'屬性嗎?我設置一個唯一的ID #getConvert爲元素 – metaphor