20 Май 2008

HTML DOM, JavaScript для добавления/удаления рядов таблицы (часть 1)

posted in JavaScirpt |

Я надеюсь, что вам известно о DOM. Если нет, то рекомендую вначале немного ознакомиться с этой статьей.

Мы попробуем написать JavaScript код для добавления/удаления рядов в таблице без использования DHTML функций (addRow, addCell и др.), мы будем использовать функции для манипуляции с деревом DOM такие как appendChild, createElement, createTextNode.

итак, пусть у нас есть такой HTML код:

<div id="DOMTree">
<table border="1" cellpadding="5">
<tbody id="myT">
<tr><td>sample 1</td><td>sample text here...</td></tr>
<tr><td>sample 2</td><td>sample text here...</td></tr>
<tr><td>sample 3</td><td>sample text here...</td></tr>
</tbody>
</table>
</div>

Мы хотим создать функцию, которая будет добавлять ряд (<tr>…</tr>) в конец таблицы. Единственный параметр, который мы будем передавать функции — идентификатор элемента TBODY:

<script type="text/javascript">
var i=3; // будем использовать переменную i просто для имен 'sample 4', 'sample 5', ...
function AddEndRow(tid) {
// создадим элемент <tr>
var myTR=document.createElement('tr');

// создадим первую ячейку (элемент <td>)
var myTD=document.createElement('td');

// у нее будет только один дочерний узел - текстовый
myTD.appendChild(document.createTextNode('sample '+(++i)));

// создаем вторую ячейку и добавляем к ней дочерний текстовый узел 'sample text here 2...'
var myTD2=document.createElement('td');
myTD2.appendChild(document.createTextNode('sample text here 2 ...'));
// теперь обе ячейки мы присоединяем к ряду (tr)
myTR.appendChild(myTD);
myTR.appendChild(myTD2);
// после єтого строку (tr) присоединяем к tbody
document.getElementById(tid).appendChild(myTR);
}
</script>

на рисунке это будет выглядеть примерно так:

1. [myTR]
2. [myTD]
3. [myTD] | -> 'sample '+(++i)
4. [myTD2]
5. [myTD2] | -> 'sample text here 2...'
6. [myTR] | -> [myTD]
7. [myTR] | -> [myTD]
              | -> [myTD2]
8. [tid] (tbody) | -> first row of our table
                      | ....
                      | -> [myTR]

Теперь добавим кнопку, кликая по которой мы будем вызывать нашу функцию:

<form name="" action="" method="">
<input type="button" value="Add row" onClick="return AddEndRow('myT');">
</form>

Нажмите на кнопку и увидите как новый ряд добавляется в конец таблицы 🙂
Все работает прекрасно во всех браузерах (тестировал на FF 1.5, Safari 3, Opera 9, IE 6+)

Теперь создадим функцию для удаления последнего ряда.

function DelLastRow(tid) {
// myTbl -> ссылка на наш Tbody
var myTbl=document.getElementById(tid);
// идем к последнему дочернему элементу tbody - то есть к последнему ряду
var deltr=myTbl.lastChild;
// удаляем этот последний ряд
myTbl.removeChild(deltr);
}

Добавим кнопку в HTML:

<input type="button" value="Delete last row" onClick="return DelLastRow('myT');">

Попробуйте :). Вас ожидает небольшой сюрприз в Safari и Firefox. Вам надо нажать дважды на кнопку, чтоб удалить ряд, а в Opera и Internet Explorer все работает хорошо. Также заметьте, что ряды, которые добавлены используя нашу функцию AddEndRow удаляются с первого клика во всех браузерах. Почему? Завтра я вам расскажу… 😉
продолжение следует

У нас один комментарий на запись “HTML DOM, JavaScript для добавления/удаления рядов таблицы (часть 1)”

Почему бы Вам не высказать своем мнение! Позвольте нам узнать, что Вы думаете...

  1. 1 On 19.04.2018, Вывод HTML DOM дерева » Владимир Осипов said:

    […] предыдущей статье мы запрограммировали две функции: для добавления и […]

Оставить комментарий