DOM没有呈现它应该呈现的内容

时间:2015-03-27 00:45:56

标签: javascript jquery

我有这个JS:

function climat(code, isday, hour){
    weather = {'113': (isday == "yes" && hour < 4) ? '<i class="sunn"></i>' : '<i class="moonn"></i>'   }
    return weather[code]
};

function Meteo(d) {
    for (h = 1; h < 4; h++) {
        alert(climat(meteo[d].hourly[h].weatherCode, meteo[d].hourly[h].isdaytime, h));
        $("#meteo"+h).html(climat(meteo[d].hourly[h].weatherCode, meteo[d].hourly[h].isdaytime), h)
    }
};

现在,我没有得到它应该得到的东西,我用alert()而且天线还可以,所以会发生什么?

以下是来自控制台的测试:

 meteo = JSON.parse(localStorage.getItem('meteo')).data.weather
 [Object, Object, Object, Object, Object]
 climat(meteo[3].hourly[2].weatherCode, meteo[3].hourly[2].isdaytime, 5)
 "<i class="moonn"></i>"
 climat(meteo[3].hourly[2].weatherCode, meteo[3].hourly[2].isdaytime, 4)
 "<i class="moonn"></i>"
 climat(meteo[3].hourly[2].weatherCode, meteo[3].hourly[2].isdaytime, 3)
 "<i class="sunn"></i>"

以下是截图,名为sunn的类,但它呈现moonn

enter image description here

2 个答案:

答案 0 :(得分:2)

这一行:

$("#meteo"+h).html(climat(meteo[d].hourly[h].weatherCode, meteo[d].hourly[h].isdaytime), h);

应该是:

$("#meteo"+h).html(climat(meteo[d].hourly[h].weatherCode, meteo[d].hourly[h].isdaytime, h));

你有h作为.html()的第二个参数,而不是climat()的第三个参数。因此,在发出警报时,您在调用climat()时的方式与添加HTML时的方式不同。

答案 1 :(得分:1)

在第二次拨打climat时,您只传递一个参数,在第一次通话中,您传递了两个参数。在第二次调用h被传递给html函数,因为这个函数只需要零或一个参数,我认为这是错误。

for (h = 1; h < 4; h++) {
    alert(climat(meteo[d].hourly[h].weatherCode, meteo[d].hourly[h].isdaytime, h));
    $("#meteo"+h).html(
        climat(meteo[d].hourly[h].weatherCode, meteo[d].hourly[h].isdaytime),
        h)
}