Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: JS: задать onclick сразу нескольким элементам

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
AlexAnder
Отправлено: 18 Июня, 2013 - 19:56:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




Например, имеется такая таблица:
Спойлер (Отобразить)

Собственно вопрос - как каждому тегу td задать обработчик onclick к примеру alert(n), где n - порядковый номер ячейки начиная с нуля

P.S. ручками прописывать <td onclick="alert(n)"> думаю не правильно Улыбка

Спойлер (Отобразить)

задаёт для каждой ячейки alert(9) Однако

допилил свой вариант:
CODE (javascript):
скопировать код в буфер обмена
  1. var td = document.getElementsByTagName('td');
  2. for(i = 0; i < td.length; i++) {
  3.  
  4.         td[i].onclick = function(x) {
  5.                 return function () {
  6.                                         alert(x);
  7.                                 }
  8.         }(i)
  9. }

(Отредактировано автором: 18 Июня, 2013 - 22:00:14)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
DelphinPRO
Отправлено: 18 Июня, 2013 - 20:02:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




навесить событие

CODE (javascript):
скопировать код в буфер обмена
  1. $('.table_class').on('click', 'td', funtion(){
  2.   // здесь осталось определить индекс нажатой ячейки :)
  3. });


Так наверное будет работать, но выглядит как-то топорно Улыбка
CODE (javascript):
скопировать код в буфер обмена
  1. $('.table_class').on('click', 'td', funtion(){
  2.    var index = $(this).siblings().index($(this));
  3.    alert(index);
  4. });

(Отредактировано автором: 18 Июня, 2013 - 20:05:16)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
AlexAnder
Отправлено: 18 Июня, 2013 - 20:03:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




DelphinPRO пишет:
навесить событие

CODE (javascript):
скопировать код в буфер обмена
  1. $('.table_class').on('click', 'td', funtion(){
  2.   // здесь осталось определить индекс нажатой ячейки :)
  3. });

Хм... а если без jQuery? Улыбка


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
DelphinPRO
Отправлено: 18 Июня, 2013 - 20:06:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




AlexAnder пишет:
Хм... а если без jQuery?

Зачем усложнять себе жизнь? Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
AlexAnder
Отправлено: 18 Июня, 2013 - 20:11:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




DelphinPRO пишет:
CODE (javascript):
скопировать код в буфер обмена
  1. $('.table_class').on('click', 'td', function(){
  2.    var index = $(this).siblings().index($(this));
  3.    alert(index);
  4. });

onclick для всех td = alert(-1)
(Добавление)
CODE (javascript):
скопировать код в буфер обмена
  1. var td = document.getElementsByTagName('td');
  2. for(i = 0; i < td.length; i++) {
  3.  
  4.         td[i].onclick = function(x) {
  5.                 return function () {
  6.                                         alert(x);
  7.                                 }
  8.         }(i)
  9. }

(Добавление)
Замыкания JavaScript

(Отредактировано автором: 18 Июня, 2013 - 22:06:47)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
esterio
Отправлено: 19 Июня, 2013 - 00:15:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




а если еще почитать о addEventListiner и AddEvent. Потом про quarySelectAll ...
 
 Top
LIME
Отправлено: 19 Июня, 2013 - 00:22:01
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




AlexAnder это не замыкание
к томуже событию не приравнивается обработчик
а результат вызова
тоесть у тебя будет шквал алертов при загрузке страницы и все
3 с минусом
 
 Top
esterio
Отправлено: 19 Июня, 2013 - 00:25:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




LIME
А Вы как раз неправы. Ето и есть замикания. Попробуйте исполнить код в фаербаге на форуме например. Только не учтено сплитие собитий
 
 Top
LIME
Отправлено: 19 Июня, 2013 - 00:26:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




вру
с телефона в скобках запутался
 
 Top
AlexAnder
Отправлено: 19 Июня, 2013 - 07:34:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




esterio пишет:
а если еще почитать о addEventListiner и AddEvent. Потом про quarySelectAll ...

спасибо, почитаю Подмигивание
(Добавление)
Цитата:
AlexAnder это не замыкание
к томуже событию не приравнивается обработчик
а результат вызова
тоесть у тебя будет шквал алертов при загрузке страницы и все
3 с минусом

на другом форуме дали замудренный код:
CODE (javascript):
скопировать код в буфер обмена
  1. window.onload = function()
  2. {
  3.     var table = document.getElementById('table1'),
  4.         tr = table.rows;
  5.  
  6.     for (var i=0; i<tr.length; i++)
  7.     { for (var j=0; j<tr[0].cells.length; j++)
  8.       { tr[i].cells[j].onclick = function(x,y){
  9.                     return function(){ alert(3*x+y+1); } }(i,j)
  10.       }
  11.     }
  12. }

я просто посмотрел как сделали, и к своему первоначальному скрипту применил это:
CODE (javascript):
скопировать код в буфер обмена
  1. td[i].onclick = function(x) {
  2.                 return function () { alert(x); }
  3.         }(i) // <--- вот это добавил =)


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB