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