simpleweather.js中的错误/过时的高/低温度

时间:2015-12-18 15:58:49

标签: javascript

对不起,如果这是显而易见的,但我只是在编码任何东西时修补和破解。我正在尝试构建一个天气显示页面,并按照我想要的方式获取所有内容,但当天的高低似乎停留在页面创建当天的数据中,并且自那以后的两天内没有更新。为了让这些数据最新,我有什么遗漏的东西吗?

这是js代码:

if("geolocation" in navigator) {
navigator.geolocation.getCurrentPosition(function(position) {
    loadWeather(position.coords.latitude + ',' + position.coords.longitude);
});
} else {
loadweather("Danville, KY", "");
}

$(document).ready(function() {
setInterval(getWeather, 60000);
});

function loadWeather(location, woeid) {
$.simpleWeather({
    location: location,
    woeid: 2389342,
    unit: 'f',
    success: function(weather) {
        city = weather.city;
        temp = weather.temp+'°';
        wcode = '<img class="weathericon" src="images/weathericons/' + weather.code + '.svg">';
        high = '<p>Today\'s High: '+weather.high+'&deg;'+weather.units.temp+'</p>' ; 
        low = '<p>Today\'s Low: '+weather.low+'&deg; '+weather.units.temp+'</p>';

        $(".location").text(city);
        $(".temperature").html(temp);
        $(".climate_bg").html(wcode);
        $(".high").html(high);
        $(".low").html(low);

    },

    error: function(error) {
        $(".error").html('<p>' + error + '<p>');
    }
});
}

1 个答案:

答案 0 :(得分:1)

对于我而言,您似乎已经忘了创建getWeather功能了。我认为你的前几行代码都是在其中,所以在ready调用之前替换所有内容应该可以解决它:

function getWeather() {
    if("geolocation" in navigator) {
    navigator.geolocation.getCurrentPosition(function(position) {
        loadWeather(position.coords.latitude + ',' + position.coords.longitude);
    });
    } else {
    loadweather("Danville, KY", "");
    }
}

也就是说,您所呈现的代码正在成为The Horror of Implicit Globals 的牺牲品(我的贫血小博客上的帖子):您想要声明变量({{1 }},city等)您正在使用temp在ajax回调中使用。