Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   переопределение события (https://javascript.ru/forum/events/1975-pereopredelenie-sobytiya.html)

blade-mscl 13.10.2008 22:28

переопределение события
 
Доброй ночи вам.
Вопрос по оперделению/переопределению событий.
Имеется следующий код:

//создаем таблицу
var table = document.createElement("table");
var _tr 	= new Array();

//заполняем таблицу			
//создание ячеек
for(var i=1; i<10; i++) {
_tr[i] = document.createElement("tr");
var _td = new Array();
for(var j=1; j<10; j++) {
		_td[j] = document.createElement("td");
		var newid = j;
		_td[j].id = j;
		_td[j].onclick = function() { cell_action(j) };
		_td[j].innerHTML = j;
		_tr[i].appendChild(_td[j]);
	}
	//add to table
	table.appendChild(_tr[i]);
}


Вопрос в том, что всем ячейкам таблицы присваивается одна функция cell_action(10); т.е. значение последней итерации.

Перечитал много статей, в том числе с javascript.ru, но решить проблему так и не смог.
Подскажите как сделать чтобы каждой ячейке присваивалось событие onClick со своим аргументом?

Kolyaj 13.10.2008 22:38

http://javascript.ru/tutorial/basic/...ispol-zovaniia

magistr_bender 13.10.2008 22:40

попробуй так
var table = document.createElement("table");
var _tr     = new Array();
var _td    = new Array();
var id;




for(var i=1; i<10; i++) {
_tr[i] = document.createElement("tr");
for(var j=1; j<10; j++) {
        _td[j] = document.createElement("td");
        id = j;
        _td[j].id = j;
        _td[j].onclick = function() { cell_action(j) };
        _td[j].innerHTML = j;
        _tr[i].appendChild(_td[j]);
    }
    //add to table
    table.appendChild(_tr[i]);
}

Kolyaj 13.10.2008 23:24

magistr_bender, вы тоже по ссылочке сходите.

magistr_bender 13.10.2008 23:32

та уже сходил)
я просто посмотрел на этот участок
for(var i=1; i<10; i++) {
_tr[i] = document.createElement("tr");
var _td = new Array();
..........
}
и мне показалось что так не должно быть.. ибо каждая итерация обнуляет все _td и я подумал что по этому скорее всего баг возникает..

blade-mscl 13.10.2008 23:59

респект ребят за точность и оперативность. разобрался.
то что не нашел на сайте нужной инфы - мой минус. признаю.

Мир.


Часовой пояс GMT +3, время: 21:34.