基本上,当前天气通过天气API在我们的页面上显示。
我想要做的是捕获数据(例如,29摄氏度)并使用javascript为其创建条件。就像,如果它是25-29摄氏度,将出现一个阳光图标(否则,应显示另一个图标)。
但是,当我尝试捕获数据时,控制台会显示“空字符串”,尽管数据在页面上可见。我该怎么做才能捕获动态数据?
<div class="weather">
[DYNAMICALLY WEATHER IS DISPLAYED HERE]
</div>
$(document).ready(function() {
$.simpleWeather({
location: 'Singapore, SG',
woeid: '',
unit: 'c',
success: function(weather) {
html = '<p class="widget-weather-info-temp"> '+weather.temp+'<sup class="widget-weather-deg">°</sup><sup class="widget-weather-unit-temp">'+weather.units.temp+'</sup></p>';
$("#weather").html(html);
},
error: function(error) {
$("#weather").html('<p>'+error+'</p>');
}
});
});
var $widgetInfoTemp = $(".widget-weather-info-temp").text();
console.log($widgetInfoTemp);
答案 0 :(得分:1)
对API的调用是异步的,因此您需要将console.log()
放在success
处理函数中。这样做时,您不需要从DOM请求元素,因为您已经可以访问返回的数据。试试这个:
$(document).ready(function() {
$.simpleWeather({
location: 'Singapore, SG',
woeid: '',
unit: 'c',
success: function(weather) {
html = '<p class="widget-weather-info-temp">' + weather.temp + '<sup class="widget-weather-deg">°</sup><sup class="widget-weather-unit-temp">' + weather.units.temp + '</sup></p>';
$("#weather").html(html);
// work with the weather data here...
console.log(weather);
console.log(weather.temp);
console.log(weather.units.temp);
},
error: function(error) {
$("#weather").html('<p>' + error + '</p>');
}
});
});
答案 1 :(得分:1)
在html追加
之后,在成功函数中执行所有逻辑 success: function(weather) {
html = '<p class="widget-weather-info-temp"> '+weather.temp+'<sup class="widget-weather-deg">°</sup><sup class="widget-weather-unit-temp">'+weather.units.temp+'</sup></p>';
$("#weather").html(html);
var $widgetInfoTemp = $(".widget-weather-info-temp").text();
console.log($widgetInfoTemp);
},