Как добавлять строку в таблицу в нужное место?
Вот функция добавления строки в таблицу:
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, время: 17:42. |