Показать сообщение отдельно
  #3 (permalink)  
Старый 20.10.2010, 14:50
Кандидат Javascript-наук
Отправить личное сообщение для Jurasmi Посмотреть профиль Найти все сообщения от Jurasmi
 
Регистрация: 25.11.2008
Сообщений: 115

Цитата:
Подскажите пожалуйста, как получить доступ к ... таблице для её редактирования.
Я так понял вопрос:
я создал много всяких таблиц на страничке, и теперь хочу в одной их них что-то поменять, как это сделать?

Можно сделать так: одним скриптом вы создаёте 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;
		}
	}
};

Для этого кода не важно где и когда были динамически созданы таблицы.

Какой из вариантов ваш?

Последний раз редактировалось Jurasmi, 20.10.2010 в 16:41. Причина: дополнил ответ
Ответить с цитированием