Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2008, 14:58
Новичок на форуме
Отправить личное сообщение для Andius Посмотреть профиль Найти все сообщения от Andius
 
Регистрация: 28.07.2008
Сообщений: 2

onclick у генерируемых элементов
Возникла проблема.
Есть набор из определенного количества div-ов, при клике на каждый из которых происходит какое-либо событие.

Делаю так:

function loading() {
	object = document.getElementById('miniForm');
	for ( var i=0; i<object.childNodes.length; i++ ) {
		object.childNodes[i].onclick = function() {
			alert(i);
		}
	}
}


<body onload="loading();">
<div id="miniForm"><div>a1</div><div>a2</div><div>a3</div><div>a4</div><div>a5</div><div>a6</div><div>a7</div><div>a8</div></div>
</body>


Проблема в том, что при клике на div алерт всегда пишет "8".
Подскажите, пожалуйста, как это можно исправить.
Ответить с цитированием
  #2 (permalink)  
Старый 28.07.2008, 15:06
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

function loading() {
    object = document.getElementById('miniForm');
    var set = function(o,x){
         o.onclick = function() {alert(x)}
    }
    for ( var i=0; i<object.childNodes.length; i++ )
        set(object.childNodes[i],i);
}
Ответить с цитированием
  #3 (permalink)  
Старый 28.07.2008, 15:25
Новичок на форуме
Отправить личное сообщение для Andius Посмотреть профиль Найти все сообщения от Andius
 
Регистрация: 28.07.2008
Сообщений: 2

Спасибо большое, работает.
Ответить с цитированием
  #4 (permalink)  
Старый 28.07.2008, 15:39
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

пожалуйста
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2008, 13:05
install
 
Сообщений: n/a

Столкнулся с такой же проблемой. Не подскажете, почему первоначальный вариант кода выдаёт такое поведение?
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2008, 13:10
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

потому что i в конце имеет значение равное длине списка. А передаётся в функцию через жопу... Чтобы передать в нужном виде (по значению) Надо вынести функцию...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать, что содержит onClick? PHPNoob Events/DOM/Window 3 17.07.2015 13:20
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 23:46
event onclick ignar jQuery 3 22.08.2008 20:04
event onClick Гость Общие вопросы Javascript 2 24.07.2008 00:15
Создание элементов createElement в IE. Phoenix Общие вопросы Javascript 6 26.09.2007 19:43