1

我有一个嵌套循环。在最里面的循环中,我正在创建数组,当控件从内部循环中出来时,我会将在内部循环中形成的整个数组复制到新数组中。

问题是这些值最终被覆盖了。我拥有的数据将用于 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 文件。但我认为这并不重要。

谢谢你。

4

3 回答 3

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基于类似的想法。

于 2013-05-08T12:14:21.580 回答
0

在开始新循环之前分配后,尝试将其重新分配为空数组值。

于 2013-05-08T11:59:14.857 回答
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){

        }
    });
});
于 2013-05-08T12:20:23.577 回答