Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.03.2010, 15:07
Аватар для DjTarik
Интересующийся
Отправить личное сообщение для DjTarik Посмотреть профиль Найти все сообщения от DjTarik
 
Регистрация: 08.03.2010
Сообщений: 24

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

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

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

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 31.03.2010, 15:24
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://javascript.ru/basic/closure#p...-ispolzovaniya
Ответить с цитированием
  #3 (permalink)  
Старый 31.03.2010, 18:43
Аватар для DjTarik
Интересующийся
Отправить личное сообщение для DjTarik Посмотреть профиль Найти все сообщения от DjTarik
 
Регистрация: 08.03.2010
Сообщений: 24

Спасибо, прочитал ещё раз. Сразу не смог разглядеть проблему) Пойду ещё поковыряюсь... Потом отпишу, что да как.
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2010, 10:26
Аватар для DjTarik
Интересующийся
Отправить личное сообщение для DjTarik Посмотреть профиль Найти все сообщения от DjTarik
 
Регистрация: 08.03.2010
Сообщений: 24

Ребята, нужен хелп.
Вроде во всём разобрался, всё понятно, сделал так:
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

Спасибо.
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2010, 10:58
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

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;
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 23:46
Как установить свойство родительской страницы после запуска 2х последов. popup окон? ksl Events/DOM/Window 10 23.08.2009 14:06
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47
XMLHTTPRequest передача имя через POST dds AJAX и COMET 0 14.08.2008 14:44
отправка файла через обработчик события submit starrich AJAX и COMET 2 13.08.2008 22:29