2014-09-17 5 views
2

Я пытаюсь вставить значение <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> 

ЯШ:

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'] 

Это конкатенации все содержимое. Некоторую помощь была бы оценена

ответ

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.

Надеюсь, что это поможет

+0

Вы почти там, вы делаете все это: '!!'! – albciff

Смежные вопросы