создание таблицы в ячейке
function WriteTable(H,U){ div = document.createElement("div"); div.setAttribute("id","set"); div.innerHTML = '<b style="text-align:center; font-size:10px;">'+H+' '+U+'</b>'; document.getElementById('BOX').appendChild(div); var table = document.createElement('table'); for (i=0; i<c; i++){ var row = table.insertRow(-1); row.setAttribute("align","center"); for (j=0; j<r; j++){ var cell = row.insertCell(-1); cell.innerHTML = m[i][j]; } } div.appendChild(table); } Вот отредактировал , все нормально работает. Создаю функцией N таблиц. Подскажите пожалуйста, как получить доступ к N-2 (хотя тут не суть важно) таблице для её редактирования. |
вначале исправите ошибки в коде!
var row = HTMLTableElement.insertRow(index); |
Цитата:
я создал много всяких таблиц на страничке, и теперь хочу в одной их них что-то поменять, как это сделать? Можно сделать так: одним скриптом вы создаёте HTML-элементы (таблицы), а редактировать их можно другим скриптом, т.е. как-то выбирать html-элементы: document.getElementById('element id'); document.getElementsByTagName('element_name'); и т.д. Как именно достучаться до "N-2" таблице надо смотреть в конкретном случае, покажите разметку, что получилось? Второй вариант: вы хотите при создании "N-2" таблицы сразу запомнить её для последующего редактирования? var editableTable, //тут будет ссылка на n-2 таблицу n = 5; function WriteTable(tableIndex){ var c = 3, r = 3, m = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]; var table = document.createElement('table'); for(i=0; i<c; i++){ var row = table.insertRow(-1); row.setAttribute("align","center"); for (j=0; j<r; j++){ var cell = row.insertCell(-1); cell.innerHTML = m[i][j]; } } document.getElementById('BOX').appendChild(table); if(tableIndex == (n-2)-1){ editableTable = table; } }; //создание "n" таблиц for(var k=0; k<=n-1; k++){ WriteTable(k); }; Это работает, если вы наперед знаете количество создаваемых таблиц. var editableTable, //тут будет ссылка на "n-2" таблицу n = 5, funInv = 0, tableClass = 'appended'; function WriteTable(){ var c = 3, r = 3, m = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]; var table = document.createElement('table'); table.setAttribute("class", tableClass); for(i=0; i<c; i++){ var row = table.insertRow(-1); row.setAttribute("align","center"); for (j=0; j<r; j++){ var cell = row.insertCell(-1); cell.innerHTML = m[i][j]; } } document.getElementById('BOX').appendChild(table); funInv++; //сколько таблиц уже наплодили }; //создание таблиц for(var k=0; k<=n-1; k++){ WriteTable(); }; var tables = document.getElementsByTagName('TABLE'), curTableIndex = 0; for(var k=0, len=tables.length; k<=len-1; k++){ if(tables[k].className == tableClass){ curTableIndex++; if(curTableIndex == funInv-2){ editableTable = tables[k]; break; } } }; Для этого кода не важно где и когда были динамически созданы таблицы. Какой из вариантов ваш? |
Спасибо за столь подробный ответ.
Мой 2ой вариант. Еще вопрос : А если хочется удалять таблицу при клике на нее. При создании таблиц даем им set.Attribute("id","tab"+(buf++)); По клику получаем атрибут "id" функцией getAttribute и удаляем таблицу через element.removechild(ggg) Реализация будет примерно таковой? |
document.getElementById('BOX').onclick = function(e){ e = e || window.event; var curEl = e.target || e.srcElement; do{ if(curEl.className == tableClass){ curEl.parentNode.removeChild(curEl); break; } curEl = curEl.parentNode; }while(curEl != document); }; тут код, который при клике удаляет таблицу с классом "tableClass". Все таблицы (которые могут быть удалены) должны находится в одном общем контейнере с id - "BOX", если такого контейнера нет, то вместо document.getElementById('BOX').onclick можно написать document.onclick |
Часовой пояс GMT +3, время: 19:51. |