Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Установить события через цикл (https://javascript.ru/forum/misc/8533-ustanovit-sobytiya-cherez-cikl.html)

DjTarik 31.03.2010 14:07

Установить события через цикл
 
Задача:

Есть список <input>-ов. Нужно после загрузки документа присвоить всем инпутам события "onclick", "onmouseover", "onmouseout".
Что только не пробовал - не получается в цикле сделать. Присваивает последнему элементу из цикла.

Подскажите:
1. Можно ли вообще такое сделать?
2. Каким методом нужно присваивать события?

Спасибо.

Kolyaj 31.03.2010 14:24

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

DjTarik 31.03.2010 17:43

Спасибо, прочитал ещё раз. Сразу не смог разглядеть проблему) Пойду ещё поковыряюсь... Потом отпишу, что да как.

DjTarik 28.04.2010 09:26

Ребята, нужен хелп.
Вроде во всём разобрался, всё понятно, сделал так:
function StylisedRadio()
{
var wrapper = document.getElementById('StylisedRadioWrapper');
var array = wrapper.getElementsByTagName('input');
for (var i = 0; i<array.length; i++)
{
var el = array[i]; // input
var neighbor = el.nextSibling; // label
var child = neighbor.firstChild; // span
el.className = 'hide-input';
if(el.checked)
{
child.className = 'radio-on';
(function(i){
neighbor.onmouseover = function ()
{
array[i].nextSibling.firstChild.className = 'radio-on-over';
};
neighbor.onmouseout = function ()
{
array[i].nextSibling.firstChild.className = 'radio-on';
};
})(i);
}
else
{
child.className = '';
(function(i){
neighbor.onmouseover = function ()
{
array[i].nextSibling.firstChild.className = 'radio-off-over';
};
neighbor.onmouseout = function ()
{
array[i].nextSibling.firstChild.className = '';
};
neighbor.onclick = function ()
{
array[i].checked = 'true';
StylisedRadio ();
};
})(i);

};
};
};

В в Opera_9.50, Opera_9.60, Opera_9.64 и Opera_10.10 не работает. Не могу понять почему? O_o Где я накосячил?

Для большей юзабельности - ссылка:
http://tarik.kasperovich.ru/test/index.html

Спасибо.

exec 28.04.2010 09:58

var idList = ['id1', 'id2', 'id3'];
for (var i = 0; i < idList; i++) {
node = document.getElementById(idList[i]);
node.onclick = fn, node.onmouseover = fn, node.onmouseout = fn;
}


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