Javascript JQuery new Date()和循环

Javascript JQuery new Date()和循环,javascript,jquery,date,datetime,Javascript,Jquery,Date,Datetime,我正在尝试制作一个简单的天气应用程序,但我遇到了一些问题。 我正在使用openweathermap.org的API来获取最低和最高温度。 这是我的钥匙: http://api.openweathermap.org/data/2.5/forecast/daily?callback=fetchData&q=London&appid=redacted&units=metric&_=1481140918291 现在,对于我正在使用的API,它们没有提供日期,因此我尝试使

我正在尝试制作一个简单的天气应用程序,但我遇到了一些问题。 我正在使用openweathermap.org的API来获取最低和最高温度。 这是我的钥匙:

http://api.openweathermap.org/data/2.5/forecast/daily?callback=fetchData&q=London&appid=redacted&units=metric&_=1481140918291
现在,对于我正在使用的API,它们没有提供日期,因此我尝试使用以下代码自行完成:

forecast.list.forEach(function(forecastEntry, index, list){

    today = new Date();

    html += '<p>'+ today + ': ' + forecastEntry.temp.min + '< ' + forecastEntry.temp.max + '</p>'

})
现在我的一些输出如下:

for (i=0;i<8;i++) {
        var today = new Date();
        today.setDate(today.getDate()+i);
        console.log(today);
        html += '<p>' + today + forecastEntry.temp.min + '< ' + forecastEntry.temp.max + '</p>'
}
function fetchData (forecast) {
    console.log(forecast)
    var html = '',
    cityName = forecast.city.name,
    country = forecast.city.country,
    cnt = forecast.cnt
    var i = 0;

    html += '<h3> Weather Forecast for ' + cityName + ', ' + country + ', ' + cnt + ' days</h3>'
    forecast.list.forEach(function(forecastEntry, index, list){
            var today = new Date();
            today.setDate(today.getDate()+i);
            console.log(today);
            html += '<p>' + today + forecastEntry.temp.min + '< ' + forecastEntry.temp.max + '</p>'
            i++;
    })
}
2016年12月7日星期三22:29:27 GMT+0100中欧标准时间:9.62<12.58

2016年12月7日星期三22:29:27 GMT+0100中欧标准时间:-6.73<5.66

2016年12月7日星期三22:29:27 GMT+0100中欧标准时间:-7.95<9.17

2016年12月7日星期三22:29:27 GMT+0100中欧标准时间:-6.34<11.77

2016年12月7日星期三22:29:27 GMT+0100中欧标准时间:-2<14.5

2016年12月7日星期三22:29:27 GMT+0100中欧标准时间:1.72<13.46

我试过这样做:

for (i=0;i<8;i++) {
        var today = new Date();
        today.setDate(today.getDate()+i);
        console.log(today);
        html += '<p>' + today + forecastEntry.temp.min + '< ' + forecastEntry.temp.max + '</p>'
}
function fetchData (forecast) {
    console.log(forecast)
    var html = '',
    cityName = forecast.city.name,
    country = forecast.city.country,
    cnt = forecast.cnt
    var i = 0;

    html += '<h3> Weather Forecast for ' + cityName + ', ' + country + ', ' + cnt + ' days</h3>'
    forecast.list.forEach(function(forecastEntry, index, list){
            var today = new Date();
            today.setDate(today.getDate()+i);
            console.log(today);
            html += '<p>' + today + forecastEntry.temp.min + '< ' + forecastEntry.temp.max + '</p>'
            i++;
    })
}
这解决了days的问题,但由于我的forEach循环,它多次重复我的整个输出。我是JS新手,解决这个问题真的有点困难。任何帮助都将不胜感激。下面是我全部代码的JSBIN:


编辑:澄清我的问题。输出显示了我想要的8天,但显示了8次。

错误在于将for循环放在foreach循环中。这应该起作用:

我删除了for循环,并将I变量放在foreach循环之外,然后在每次循环运行时递增它

最后,函数将如下所示:

for (i=0;i<8;i++) {
        var today = new Date();
        today.setDate(today.getDate()+i);
        console.log(today);
        html += '<p>' + today + forecastEntry.temp.min + '< ' + forecastEntry.temp.max + '</p>'
}
function fetchData (forecast) {
    console.log(forecast)
    var html = '',
    cityName = forecast.city.name,
    country = forecast.city.country,
    cnt = forecast.cnt
    var i = 0;

    html += '<h3> Weather Forecast for ' + cityName + ', ' + country + ', ' + cnt + ' days</h3>'
    forecast.list.forEach(function(forecastEntry, index, list){
            var today = new Date();
            today.setDate(today.getDate()+i);
            console.log(today);
            html += '<p>' + today + forecastEntry.temp.min + '< ' + forecastEntry.temp.max + '</p>'
            i++;
    })
}

您已经描述了它的功能,但没有描述您希望它做什么。你能指定预期的行为吗?你在发布你的appid时应该小心,因为现在任何人都可以使用它,他们将能够用完你分配的请求…@JohnWu查看JSBIN并键入London,例如,现在你将多次看到输出,但我只想一次。@MikeMcCaughan是的,我知道这很危险,但我想详细描述我的问题。。。。??你想要一次吗???我以为你想要八天的预报。如果你只想有一天,就摆脱for循环。我误解了吗?你运行的是完全相同的代码吗?它对我起作用了。它对JSBin有问题,这就是为什么它一开始对我不起作用的原因。非常感谢。请在问题中包含您更改的代码。如果该站点关闭或该示例从其站点中删除,则此答案对其他人的帮助较小。@MikeMcCaughan你是说我吗?在这种情况下,我需要在我的问题中添加解决方案吗?对不起,这是一个样板评论。在答案中包含代码。