Аргументы обработчика событий JavaScript

У меня есть следующий код JavaScript:

var ans_el = document.createElement( 'input' );
ans_el.setAttribute( 'id', unique_int_value );
ans_el.setAttribute( 'type', 'radio' );
ans_el.setAttribute( 'name', 'group' );
ans_el.setAttribute( 'value', 'myValue' );
ans_el.onclick = myFunction( this.id, this.value ); 

// Add ans_el to DOM.

function myFunction( index, value ) { // do something }

Это, конечно, не работает как ожидалось. По крайней мере, не в Firefox 3.6. То, что происходит, является onclick событием, запущен, когда элемент создается, и аргументы, переданные myFunction, нулевые. После того, как элемент добавляется к DOM, onclick событие не стреляет, когда переключатель является выбором.

Я был бы благодарен, если у кого-либо есть некоторое понимание, что происходит здесь, и/или как могут быть выполнены динамично добавляющие обработчики событий.

7
задан informatik01 10 July 2014 в 11:59
поделиться

1 ответ

Вам нужно дать ссылку на функцию для onclick; в настоящее время вы выполняете функцию и присваиваете результат обработчику onclick. Это ближе к тому, что вы хотите:

ans_el.onclick = function(e) {
   myFunction(ans_el.id, ans_el.value);
};

ОБНОВЛЕНО: Решил использовать event.target для более наглядного примера, поскольку Andir поднял эту тему.

ans_el.onclick = function(e) {
   myFunction(e.target.id, e.target.value);
};
12
ответ дан 6 December 2019 в 21:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: