Как добавлять строку в таблицу в нужное место?
Вот функция добавления строки в таблицу:
function addRow(id){ var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0]; var row = document.createElement("TR"); var td1 = document.createElement("TD"); var i=0,number=1; while (document.getElementsByTagName("TD")[i]) { number=i; i++; } td1.appendChild(document.createTextNode("column "+(2+number))); var td2 = document.createElement("TD"); td2.appendChild (document.createTextNode("column "+(3+number))); row.appendChild(td1); row.appendChild(td2); tbody.appendChild(row); } Но она постоянно добавляет строку ТОЛЬКО в конец строки, а нужно именно перед той строкой, на которую я нажал... через onclick... номера строки в параметры вызова функции пишу. Конечно есть вариант перебора, но чет утомляющий способ... Еще способ через parentNode узнаю родителя, а потом через childnotes[n] <= в нужное место вставить строку, но боюсь он тупо заменит тот элемент который был под n, а не вставит новую. |
vitorrio,
Во первых вставьте ячейки сразу в строку на этапе var row = document.createElement("TR"); и в цикле вставляем row.appendChild(td[i]) Во вторых строку таблы вставляем не rowN.appendChild(row) ; а insertBefore(row) ; в строку на единицу меньше, чем та после которой нужно вставлять либо .appendChild(row) но в tbody |
Цитата:
|
Можно свой метод написать, чтоб вставляло после строки а можно без метода. Так работает, но циферки правильно не меняет:
function dododo (event) { event = event || window.event; var target = event.target || event.srcElement; while(target != this) { if (target.tagName == 'TR') { addRow(target); } target = target.parentNode; } } function addRow(target){ var tbody = document.getElementById('tab').getElementsByTagName("TBODY")[0]; var row = document.createElement("TR"); var td1 = document.createElement("TD"); var i=0,number=1; while (document.getElementsByTagName("TD")[i]) { number=i; i++; } td1.appendChild(document.createTextNode("column "+(2+number))); var td2 = document.createElement("TD"); td2.appendChild (document.createTextNode("column "+(3+number))); row.appendChild(td1); row.appendChild(td2); tbody.insertBefore(row, target.nextSibling); } |
Часовой пояс GMT +3, время: 12:21. |