Tengo el siguiente código JavaScript:JavaScript argumentos de controlador de eventos
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 }
Esto, por supuesto, no funciona como se esperaba. Al menos no en Firefox 3.6. Lo que ocurre es que el evento onclick se activa cuando se crea el elemento y los argumentos pasados a myFunction son nulos. Después de agregar el elemento al DOM, el evento onclick no se activa cuando se selecciona el botón de opción.
Estaría agradecido si alguien tiene alguna idea de lo que está sucediendo aquí, y/o la forma dinámica de agregar controladores de eventos se puede lograr.
también puede obtener la identificación/valor del objeto e.target. (e.target.id ...) – Andir
Gracias por la respuesta rápida. Hice algo similar que parece funcionar: ans_el.setAttribute ('onclick', 'myFunc (this.id, this.value)'); Solo he probado esto en FF, estoy seguro de que Internet Explorer requerirá prodigiosos saltos en bastidor para lograr lo mismo. Estoy muy tentado de decirle a mis usuarios que I.E. no será compatible. – Bruce
Eso funcionará, pero el uso de cadenas de código js para ser evaluado() ed así es generalmente desaprobado. Suele ser lento, con errores, y presenta una serie de problemas de seguridad. Ver http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil/198031#198031 – sunetos