Назначение onclick с параметром
Здравствуйте.
Есть код, в нем в цикле генерируются элементы, всем элементам присваевается вывоз ф-ции по событию onclick li = document.createElement('LI'); li.onclick = toSelected; Вопрос: как мне по клику присвоить вызов toSelected(1), если я так и напишу, то в li.onclick вернется вызов toSelected(1) Спасибо. |
preproger,
оберни в функцию |
Цитата:
IE9+: toSelected.bind(this, 1) Если нужна поддержка IE8, то либо подключить polyfill, либо писать код так: onclick = function(){ toSelected(1); }; Но так получается что создается каждый раз новая функция. Как альтернатива - можно параметр устанавливать в атрибут элемента: li.setAttribute('data-index', 1) |
Спасибо за ответы!
Получилось! p.s. Да, с "вывозом" забавно получилось ) Цитата:
|
Столкнулся с проблемой.
Если мы назначаем обработчик li.onclick = toSelected; то в теле toSelected this у нас objectHTMLelement (мне это и нужно), а если вызов происходит через li.onclick = function(){ toSelected(1); }; то this - window object. Подскажите, пожалуйста, почему так происходит и как мне получить ссылку именно на тот li, по которому совершен клик, если мне обязательно вызывать toSelected с параметрами |
Цитата:
Цитата:
|
Цитата:
li.my_nice_property=1; или по-научному li.dataset.my_propertya = 1; в вызове елемент достанет кол из тела и применит var some = this.dataset.my_propertya; |
Цитата:
Цитата:
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> </head> <body> <script> function toSelected(a) { alert([this,a]) } li = document.createElement('LI'); li.appendChild(document.createTextNode('test')); li.onclick = li.onclick = function(){ toSelected.call(li,1); }; document.body.appendChild(li); </script> </body> </html> |
Цитата:
Есть нормальный скриптовый объект Event через который все делается и будет только лучше все делаться в будущем. li.addEventListener('click', my_func, false); И там туева хуча возможностей по управлению событием, в этом Event кроме того. |
В частности вы можете вешать не всех подряд li, а только одного ul вздернуть. На дыбе он расколется через event какой именно li его сдал. Я про Event.
|
рони, Да, на js народ ресурсами вообще не парится. История показала что клиенты стали в стопицот раз жирнее серверов, особенно в бедных странах типа РФ. На сервере мне 32 мегабайта под скрипт выделяют и 30 секунд, а на клиенте можно и гиг зохавать - не обеднеет.
|
Большое спасибо за ответы!
Воспользовался методом из 3 сообщения! li.setAttribute('data-id', 0); а в ф-ции type = this.getAttribute('data-id'); |
Подскажите, пожалуйста.
Частично реализовал требуемый ф-ционал, но возникла проблема. Требуется из массива имен сделать список сотрудников. Имеем второй список с выбранными сотрудниками. По клику сотрудник переносится в выбранные и обратно. Проблема: жму на 1ого, переносится 2ой (на 2ого 3ий). Дебажил. Везде все ID и имена совпадают. Получаю номер элемента массива с именами, удаляю из него, переношу в новый массив. Вывожу - имя другое. Ссылка на http://jsfiddle.net/hmJjL/1/ все видно наглядно... Похоже я уже закипел и не вижу, скорее всего, очевидную ошибку |
Нашел причину ошибки!
Невнимательность. Работал с 1 массивом, а вывел другой. |
Часовой пояс GMT +3, время: 12:45. |