【问题标题】:Push array into object inside loop将数组推入循环内的对象
【发布时间】:2014-11-12 02:23:43
【问题描述】:

我正在尝试在数组arrChairs[] 中插入<span class=""> 值,并将此数组插入到对象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']

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

【问题讨论】:

    标签: javascript jquery arrays object each


    【解决方案1】:

    您将&lt;span class=""&gt; 放在一起,因为您没有为根&lt;div&gt; 中的每个&lt;a&gt; 初始化arrChairs。试试这个:

    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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2020-11-09
      • 1970-01-01
      • 2021-06-14
      • 2014-10-12
      • 2021-02-09
      • 2019-06-20
      • 1970-01-01
      • 2017-10-11
      相关资源
      最近更新 更多