Назначение 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, время: 23:43. |