как создать в цикле несколько дочерних элементов одного уровня?
создана таблица, хочу с помощью функции создать несколько "детей" циклом for, но в результате создается только один..
в чем проблема цикла? как дочерние элементы создать циклом? function createTr(){ var tr=document.createElement('tr'); for (var i=0; i<3; i++) //пускай например 3 элемента tr document.getElementsByTagName('table')[0].appendChild(tr); } |
document.getElementsByTagName('table')[0].appendChild(tr.cloneNode(true)); |
Amphiluke, т.е. получается сначала нужно создать объект, а потом в цикле сделать нужное количество клонов?
|
Нет, не обязательно так. Просто так короче получается. Вообще, читайте о «родных» методах объекта HTMLTableElement типа insertRow().
|
Amphiluke, другими словами
var tr=document.createElement('tr');- создает один экземпляр, который цикл не может вставить несколько раз? |
Вы в цикле пытаетесь вставить в таблицу строку, которая в ней уже имеется. Метод appendChild выдирает элемент из текущего родителя (если есть) и вставляет в новый. У вас старым и новым родителем оказывается один и тот же объект таблицы.
|
Amphiluke, на всякий))
У элемента table есть дочерний элемент tbody, а также нет смысла каждый элемент добавлять через цикл (представьте, что их будет 100), для этого их нужно сначала создать, а потом уже добавить |
Цитата:
Цитата:
|
Цитата:
<script type="text/javascript"> window.onload = function(){ var table = document.getElementsByTagName('tr')[0], tr = '<td style="border: 1px solid"/>', array = [], i = 0; while(++i<=4){ array.push(tr+'td'+i); } table.innerHTML = array.join(''); }; </script> <table><tr/></table> |
Спасибо всем, разобрался...
|
Часовой пояс GMT +3, время: 02:11. |