Функция onclick в цикле
Добрый день!
Помогите, пожалуйста, решить задачу. Нужно что бы при клике по диву, выскакивал алерт с номером. Что у меня не так? <div class="test"> 111 </div> <div class="test"> 222 </div> <div class="test"> 333 </div> <div class="test"> 444 </div> <script> var per = document.getElementsByClassName("test"); var i; for(i=0; i<per.length; i++){ per[i].onclick = function(){ alert(i); }; } </script> |
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>ГГ</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <style> *{ margin:0; padding:0; outline: 0; } .test { display: inline-block; width: 50px; height: 50px; border: 1px solid black; } </style> </head> <body> <div class="test"> 111 </div> <div class="test"> 222 </div> <div class="test"> 333 </div> <div class="test"> 444 </div> <script> var per = document.getElementsByClassName("test"); for(var i=0; i<per.length; i++){ (function(n){ per[n].onclick = function(){ alert(n+1); } }(i)); } </script> </body> </html> |
Здорово!
Буду переваривать, спасибо! |
...а если внутренняя функция замыкания - с параметром?
Вложений: 1
Приветствую всех!
У меня - сходная проблема с замыканиями. Вроде и начал прозревать кое что об их необходимости в JS, но всё равно пока не всё получается. Вот в моём случае необходимо, чтобы при клике на ячейке таблицы (фактически - на DIV'е) рядом с некоторым смещением показывалась таблица с цветовыми кодами. Функцию смещения я подсмотрел в Тырнете, на конкретном ОТДЕЛЬНОМ элементе работает нормально. А вот подключить её в цикле сразу на все DIV'ы определённого класса - не получается: не могу передать в неё параметр (конкретный текущий DIV). :cray: Подскажите, пожалуйста, как правильно сделать. Прилагаю HTML+JS файлы в архиве. |
...а если внутренняя функция замыкания - с параметром?
Может, кому пригодится - ответ таки найден. Получен на другом форуме.
|
Часовой пояс GMT +3, время: 18:39. |