我有一个嵌套循环。在最内层的循环中,我正在创建数组,当控件从内部循环中出来时,我正在将内部循环中形成的整个数组压缩到新数组中。
问题在于最终会重写这些值。 我的数据将用于2个外循环,每个循环将分别有5个和24个内循环。
但最后我获得的总数据是最后一个循环的数据。
这是js代码:
$(document).ready(function(){
$.ajax({
url: "Sample.xsd",
dataType: "html",
success: function(data){
var xmlObj = $.parseXML(data);
var buff = $(xmlObj).find("xs\\:complexType");
var xmlObj1 = []; var buff1 = [];
var j = 0;
$(buff).each(function(i){
buff1.splice(0, buff1.length);
$this = $(this);
$this.find("xs\\:element").each(function(index){
buff1[index] = $(this).attr('name');
});
xmlObj1[j] = buff1;
console.log(xmlObj1);
j++;
});
console.log(xmlObj1);
},
error: function(err){
}
});
});
如果你想我也可以附加xsd文件。但我认为它很重要。
谢谢。
答案 0 :(得分:0)
在开始新循环之前,尝试将其重新分配为数组值为空。
答案 1 :(得分:0)
$(function() {
$.ajax({
url: "Sample.xsd",
dataType: "html",
success: function(data) {
var xmlObj = $.parseXML(data), xmlObj1 = new Array(),
buff = $(xmlObj).find("xs\\:complexType");
$(buff).each(function(i) {
var buff1 = new Array();
$(this).find("xs\\:element").each(function(ii) {
buff1[ii] = $(this).attr('name');
});
xmlObj1[i] = buff1;
});
console.log(xmlObj1);
},
error: function(err) {
console.log(err);
}
});
})
jsFiddle基于类似的想法。
答案 2 :(得分:0)
您可以将buff1
作为$(buff).each
循环的局部变量。
$(document).ready(function(){
$.ajax({
url: "Sample.xsd",
dataType: "html",
success: function(data){
var xmlObj = $.parseXML(data), xmlObj1 = [];
var buff = $(xmlObj).find("xs\\:complexType");
$(buff).each(function(i){
var buff1 = [], $this = $(this);
$this.find("xs\\:element").each(function(index){
buff1.push($(this).attr('name'));
});
xmlObj1.push(buff1)
});
console.log(xmlObj1);
},
error: function(err){
}
});
});