Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Код работает не так как задумал. Обработчик onclick (https://javascript.ru/forum/misc/18920-kod-rabotaet-ne-tak-kak-zadumal-obrabotchik-onclick.html)

prowoke 20.07.2011 14:49

Код работает не так как задумал. Обработчик onclick
 
Здравствуйте. Вот код:
if (window.addEventListener) {
	window.addEventListener('load', clickHandler);
} else if (window.attachEvent) {
	window.attachEvent('onload', clickHandler);
}

function clickHandler() {	
var data = [
	['checkbox_title', 50],
	['checkbox_message', 100]
];

var element;
var height;

for (var i = 0; i<data.length; i++) {
		element = data[i][0];
		height = data[i][1];


document.getElementById(element).onclick = function() { 
		alert(height);
		}

	}
}


Он выводит постоянно при клику на нужный мне обьект, цифру 100, хотя в 1 случае должен 50, ну а на 2 обьект 100, а он всегда 100 выводит. И такой ещё вопрос хочу задать, можно ли как передать параметры функции, когда мы вещаем обработчик события через object.click или window.addEventListener.

Kolyaj 20.07.2011 15:03

http://javascript.ru/basic/closure#p...-ispolzovaniya

prowoke 20.07.2011 23:31

С вопроса "Почему это не работает?" люди обычно начинают изучение замыканий.

function addEvents(divs) {
for(var i=0; i<divs.length; i++) {
divs[i].innerHTML = i
divs[i].onclick = function() { alert(i) }
}
}


Очень понравилась вот эта строчка:). Спасибо, разобрался.


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