gpt4 book ai didi

javascript - 在 jQuery 每个循环中推送到一个数组

转载 作者:数据小太阳 更新时间:2023-10-29 05:01:56 26 4
gpt4 key购买 nike

我正在使用 jQuery 来解析 XML 文件,并且我正在尝试使用 jQuery .each 循环将 XML 文件中的每个元素推送到一个数组中。奇怪的是,如果我在循环中提醒数组的值,它会按预期出现,但如果我在循环完成后尝试提醒数组中的值,则会导致“未定义”。

在这种循环中将值推送到数组时会发生什么奇怪的事情吗?


这是 Javascript:

var splashArray = new Array();

// Load the Splash XML file and assign each image within to an array
$.get('splash.xml', function(xml) {
$('image', xml).each(function (i) {
splashArray.push($(this).attr("src"));
});
});

alert(splashArray[1]); // Results in undefined



这是 XML:

<?xml version="1.0" encoding="UTF-8"?>
<site>
<image src="splash1.jpg" />
<image src="splash2.jpg" />
<image src="splash3.jpg" />
<image src="splash4.jpg" />
<image src="splash5.jpg" />
<image src="splash6.png" />
</site>

最佳答案

正确的变体:

var splashArray = new Array();

// Load the Splash XML file and assign each image within to an array
$.get('splash.xml', function(xml) {
$('image', xml).each(function (i) {
splashArray.push($(this).attr("src"));
});
alert(splashArray[1]);
});

在您的代码变体中 alert(splashArray[1]);在 ajax 获取 xml 结果之前执行,因此当您尝试警告索引为 1 的元素时,splashArray 为空。当线程等待服务器响应时,您的代码仅适用于同步模式。在异步模式下,您应该使用回调函数。

带有回调的变体:

var splashArray = new Array();

// Load the Splash XML file and assign each image within to an array
$.get('splash.xml', function(xml) {
$('image', xml).each(function (i) {
splashArray.push($(this).attr("src"));
});
work_with_splash();
});

function work_with_splash () {
alert(splashArray[1]);
}

或者另一种模式(伪代码):

function process(ajax_is_done) {
if (!ajax_is_done) {
ajax(function (result) {
import_result(result);
process(true);
})
}
}
process();

关于javascript - 在 jQuery 每个循环中推送到一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1484315/

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