gpt4 book ai didi

javascript - 如何在JQuery中打印数组元素?

转载 作者:行者123 更新时间:2023-12-03 02:56:58 25 4
gpt4 key购买 nike

我有以下代码来获取城市的天气详细信息。当我加载页面时,它通过 URL get 方法提供给定城市的正确天气详细信息。但无法打印每个结果的城市名称。在我的示例中,它总是显示“悉尼”

如何打印每个城市名称和结果?

代码:

x = window.location.search.substr(6);
y = x.split("%2C");

$(document).ready(function() {
$('#b1').click(function() {

for (i = 0; i < y.length; i++) {

city = y[i];

$.ajax({
url: 'http://api.openweathermap.org/data/2.5/weather?q=' + city +
"&units=metric" +
"&appid=ace585585ed8eb42338b8e663fe0170e",
type: 'get',
dataType: 'jsonp',
success: function(data) {
var w = showd(data);
var para2 = $("<p></p>").text(city);
var para = $("<p></p>").text(w);
$("body").append(para2, para);
}
});

function showd(data) {
return data.weather[0].description;

}
}
});
});

$(document).ready(function() {
document.getElementById("b1").click();
});
<Script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></Script>

<button style="visibility:hidden;" id="b1">Click</button><br><br>
<p id="data"></p>
<p id="p2"></p>

网址:

file:///C:/wamp/www/aTravelz/checkweather.html?wthr=Moscow%2CLondon%2CColombo%2CSydney

结果:

Sydney

overcast clouds

Sydney

light intensity shower rain

Sydney

few clouds

Sydney

broken clouds

最佳答案

您的代码正在使用城市的最后一个值(for循环完成后),因为AJAX响应将在同一时间之后出现。

您需要锁定每个AJAX请求city

 (function(city){ $.ajax({
//rest of the ajax code stays as is
}))(city);

或者您可以使用 let 而不是 var,如 @xander 在评论中所说(如演示中所示)

演示

var arr = [ 1,2,3 ];
for( var counter = 0; counter < arr.length; counter++ )
{
let c = arr[ counter ];
setTimeout( function(){
console.log(c)
}, 100);
}

关于javascript - 如何在JQuery中打印数组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47574395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com