динамическая работа с таблицамиЧасто при использовании html таблиц с помощью JavaScript можно избежать лишних перезагрузок страницы, улучшить юзабилити и упростить работу пользователей. Под динамической работой понимается:
1. создание таблицыДля того, чтобы создать новую таблицу на странице нужно сгенерировать элемент TABLE (createElement()) и добавить его в иерархическую структуру документа с помощью метода appendChild():
var newElem=document.createElement('table');
document.body.appendChild(newElem);
2. управление атрибутамиЕсть два способа присвоения атрибутов элементу: использование метода setAttribute()
var newElem=document.createElement('table');
newElem.setAttribute('id','tl');
newElem.setAttribute('width','500');
newElem.setAttribute('border','1');
document.body.appendChild(newElem);
и прямое обращение к свойствам объекта
var newElem=document.createElement('table');
newElem.id='tl';
newElem.width=500;
newElem.border=1;
document.body.appendChild(newElem);
Есть и более простой способ добавления в документ таблицы с определенными атрибутами:
document.body.innerHTML=' 3. добавление/удаление столбцов и строк и 4. перемещение строкДля вставки строк используется метод insertRow(), ячеек - insertCell():
var newElem=document.createElement("table");
var newRow=newElem.insertRow(0);
var newCell = newRow.insertCell(0);
newCell.width="200";
newCell.innerHTML="строка 1 столбец 1";
var newCell = newRow.insertCell(1);
newCell.width="400";
newCell.innerHTML="строка 1 столбец 2";
var newRow=newElem.insertRow(1);
var newCell = newRow.insertCell(0);
newCell.width="200";
newCell.innerHTML="строка 2 столбец 1";
var newCell = newRow.insertCell(1);
newCell.width="400";
newCell.innerHTML="строка 2 столбец 2";
document.body.appendChild(newElem);
Для удаления строк используется метод deleteRow(), по своей конструкции аналогичный методу insertRow(),
ячейки - deleteCell(). Для перемещения строк существует функция moveRow(индекс_источника, индекс_приёмника),
но она пока работает только в IE (по крайней мере мне не удалось заставить ее работать в других браузерах).
Про кроссбраузерную функцию перемещения строк см. сортировка html таблицы средствами JavaScript.Следующий пример работает только в IE:
var dt = document.getElementById("t1");
function delete_tr(obj) {
var num_tr=obj.parentNode.sectionRowIndex;
dt.deleteRow(num_tr)
}
function up_tr(obj) {
var num_tr=obj.parentNode.sectionRowIndex;
if (num_tr!=0) dt.moveRow(num_tr, num_tr-1);
}
function down_tr(obj) {
var num_all_tr=obj.parentNode.parentNode.childNodes.length;
var num_tr=obj.parentNode.sectionRowIndex;
if (num_tr!=num_all_tr-1) dt.moveRow(num_tr, num_tr+1);
}
5. заполнение ячеекЗаполнение ячеек возможно с помощью свойств innerHTML и innerTEXT (их отличия, думаю, понятны из названия):
document.getElementById('идентификатор').innerHTML = 'something';
дополнительноКак перебрать в цикле все таблицы на странице:
var tables = document.getElementsByTagName("table");
for ( var t = 0; t < tables.length; t++ )
{ ... }
Как перебрать в цикле все ячейки таблицы:
var td_cells=document.getElementById("tl").cells;
for (var i=0; i < td_cells.length; i++)
alert(td_cells[i].innerHTML);
как закрасить строки таблицы через одну:
var t = document.getElementsById('t1');
var rows = t.getElementsByTagName("tr");
for ( var i = 1; i < rows.length; i += 2 )
rows[i].className = "odd";
Комментарии:XprogeR 09.09.08 16:27 Спасибо, очень помогло! И про рекламу незабыл! anonymous 22.11.08 17:03 Эмм...я мож мало еще че погимаю, но я знаю только функцию getElementById, а не getElementSById, без с все прекрасно работает =) BANderLOG 22.11.08 17:03 Эмм...я мож мало еще че погимаю, но я знаю только функцию getElementById, а не getElementSById, без с все прекрасно работает =) AndyRoot 09.03.09 12:48 Интересно, но у меня почему-то не работает в IE? Если интересно, здесь (http://abloga.net.ru/?p=42) есть примеры и демо. Везде работает. Может стоить подправить... ALX 03.04.09 14:42 Мде А в файрфоксе moveRow не работает хуйня этот файрфокс OPium 18.01.10 01:20 класный сайт Антон 09.11.10 20:48 Почему то не работает setAttribute("bgcolor","#ff0000) для ячеек таблицы TD, созданных с помощью createElement('TD') в Internet Explorer, вообще не могу никак там цвет сделать в таблице.... ( Александр 03.02.11 22:10 Спасибо за сайт! Саша 22.11.11 10:39 добрый день,у меня есть форма хтмл, при заполнении которой,после нажатия кнопки, данные идут в базу, а из базы информация поступает в таблицу хтмл, которая расположена ниже этой формы.А мне надо чтобы информация обновлялась динамически по ходу внесения данных в форму, т е еще до нажатия кнопки, подскажите пожалуйста, может мне надо связать таблицу с формой напрямую(не через базу) или может есть какой то другой способ? и стоит ли мне переписать все вычисления с пхп на яваскрипт(для вызова onkeyup)? заранее спасибо! Если вам помогла или просто понравилась эта статья вы можете отблагодарить автора кликнув по рекламе. Спасибо! комментировать:
прежде чем писать комментарий убедитесь, пожалуйста, что он не попадает в нижеследующие категории:
прямые оскорбления кого бы то ни было будут удалятся! от кого: |


