将数组推入循环内的对象

时间:2014-09-17 21:48:16

标签: javascript jquery arrays object each

我正在尝试在数组<span class="">中插入arrChairs[]值,并将此数组插入对象room{}中,显然我是以错误的方式执行,因为它不工作,这是代码:

HTML:

<div id="table">
    <a href="" id="foo1">
        <span class="chair1"></span>
        <span class="chair2"></span>
        <span class="chair3"></span>
        <span class="chair4"></span>
    </a>
    <a href="" id="foo2">
        <span class="chair1"></span>
        <span class="chair2"></span>
    </a>
    <a href="" id="foo3">
        <span class="chair1"></span>
        <span class="chair2"></span>
        <span class="chair3"></span>
    </a>
</div>

JS:

room = {},
arrChairs  = [];

$('#table a').each(function(i){
    tableId = $('#table a:eq('+i+')').attr('id');
    room[tableId] = {};

    $('#table a:eq('+i+') span').each(function(i){
       arrChairs.push( $(this).attr('class') ); 
    });
    room[tableId].chairs = arrChairs;
});

我不知道为什么它不起作用。

这是arrChair在console.log上返回我的内容:

['chair1','chair2', 'chair3', 'chair4', 'chair1', 'chair2', 'chair1', 'chair2', 'chair3']

它连接了所有内容。一些帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

由于您没有为根<span class="">中的每个arrChairs初始化<a>,因此您将<div>放在一起。请尝试使用此功能:

room = {};

$('#table a').each(function(i){
    tableId = $('#table a:eq('+i+')').attr('id');
    room[tableId] = {};
    var arrChairs  = [];

    $('#table a:eq('+i+') span').each(function(i){
       arrChairs.push( $(this).attr('class') ); 
    });
    room[tableId].chairs = arrChairs;
});

使console.log成为room而不是arrChairs

希望这有帮助