Как совместить два цикла each и for?
Здравствуйте.
Работаю со строкой из таблицы, в которой много значений. Получаю значения всех ячеек в массив parentTR, получается около 33 ячеек. Также есть еще один массив fromBD.childNodes, в котором 5 значений. Нужно реализовать поочередную вставку соответствующих значений второго массива в соответствующую по порядку ячейку строки таблицы, ячейки которой в первом массиве. Как можно это реализовать? Нужно конечно использовать цикл each, но как внутри него использовать второй цикл, тем более для короткого массива из 5-ти элементов? Или просто через условие делать? так: parentTR.children().each(function(i, elem) { if (i == 1) { $(elem).text(fromBD.childNodes[0].innerHTML); } else if (i == 2) { $(elem).text(fromBD.childNodes[1].innerHTML); } else if (i == 3) { $(elem).text(fromBD.childNodes[2].innerHTML); } else if (i == 4) { $(elem).text(fromBD.childNodes[3].innerHTML); } else if (i == 5) { $(elem).text(fromBD.childNodes[4].innerHTML); } else if (i == 6) { $(elem).text(fromBD.childNodes[0].innerHTML); } // и по новой и так далее } Или как-то проще можно объединить два цикла, чтобы не писать условия по 33 раза? |
kuchuluk,
Вы уверены, что так? if (i == 1) { $(elem).text(fromBD.childNodes[0].innerHTML);[b]kuchuluk[/b], а где i == 0? |
parentTR.children().each(function(i, elem) { var j = i - Math.floor(i / 5 ) * 5; $(elem).text(fromBD.childNodes[j].innerHTML); } Где j - вот такое for(var i = 0; i < 33; i++) { alert(i - Math.floor(i / 5 ) * 5); } |
Цитата:
|
Цитата:
|
Цитата:
Весь ваш цикл выше. Если пропускать первую ячейку, то ваш скрипт parentTR.children().each(function(i, elem) { if(i > 0) { var j = i - Math.floor((i - 1) / 5 ) * 5 - 1; $(elem).text(fromBD.childNodes[j].innerHTML); } } |
|
Aetae,
Да, так проще parentTR.children().each(function(i, elem) { if(i > 0) { var j =(i - 1) % 5 ; $(elem).text(fromBD.childNodes[j].innerHTML); } } |
А как-нибудь можно улучшить, чтобы если какой-то из элементов первого массива (то есть elem) равен какому-нибудь значению, то чтобы в эту ячейку ничего не вставлялось и чтобы дальнейшая вставка происходила в следующую за ней ячейку, но с того элемента массива fromBD.childNodes[j], который должен был вставиться в ту ячейку, в которую ничего вставлено не было.
Если делаю так: if (i > 3) { if (elem.innerHTML == 'В') { return; } var j =(i - 4) % 5; $(elem).text(fromBD.childNodes[j].innerHTML); } То в эту ячейку ничего не добавляется, но в следующую вставляется значение уже следующего элемента массива fromBD.childNodes, а не того, который был пропущен |
Часовой пояс GMT +3, время: 11:07. |