Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.08.2012, 16:32
Аспирант
Отправить личное сообщение для vitorrio Посмотреть профиль Найти все сообщения от vitorrio
 
Регистрация: 27.08.2012
Сообщений: 69

Как добавлять строку в таблицу в нужное место?
Вот функция добавления строки в таблицу:

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, а не вставит новую.
Ответить с цитированием
  #2 (permalink)  
Старый 30.08.2012, 16:41
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

vitorrio,
Во первых вставьте ячейки сразу в строку на этапе
var row = document.createElement("TR");
и в цикле вставляем row.appendChild(td[i])

Во вторых строку таблы вставляем не rowN.appendChild(row) ;

а insertBefore(row) ; в строку на единицу меньше, чем та после которой нужно вставлять
либо .appendChild(row) но в tbody
Ответить с цитированием
  #3 (permalink)  
Старый 30.08.2012, 22:21
Аспирант
Отправить личное сообщение для vitorrio Посмотреть профиль Найти все сообщения от vitorrio
 
Регистрация: 27.08.2012
Сообщений: 69

Сообщение от Deff Посмотреть сообщение
а insertBefore(row) ; в строку на единицу меньше, чем та после которой нужно вставлять
А если в строку на единицу больше? т.е. за той строкой на которую нажал - есть такой метод?
Ответить с цитированием
  #4 (permalink)  
Старый 31.08.2012, 22:05
Аватар для eirnvn
Кандидат Javascript-наук
Отправить личное сообщение для eirnvn Посмотреть профиль Найти все сообщения от eirnvn
 
Регистрация: 15.09.2011
Сообщений: 70

Можно свой метод написать, чтоб вставляло после строки а можно без метода. Так работает, но циферки правильно не меняет:
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);
  }
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в таблицу добавить th? deivan Общие вопросы Javascript 8 13.08.2012 16:55
Как повернуть таблицу? Iktash Элементы интерфейса 5 05.08.2012 10:12
Как изменить адресную строку и изменить историю переходов vuler Общие вопросы Javascript 4 20.03.2012 13:14
Как частично удалить текстовую строку из набора? Nubi jQuery 2 27.12.2008 22:11
Как создать строку JSON с переменными? Артем AJAX и COMET 4 01.11.2008 12:12