Назначение 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.
|
Часовой пояс GMT +3, время: 14:15. |