Hola. On 1/29/07, Juan José Montes de Oca Arbós <[EMAIL PROTECTED]> wrote: > Hola Gente!!!!! > > Tengo una duda/problema... revisando y leyendo sobre javascript, encontré > que si quiero asignarle una función a un evento dinamicamente, tengo que > hacer algo como esto: > > function funcionHacerAlgo () { > alert ('Se ejecutó el OnClick.'); > } > > //En alguna parte del código, asigno al evento onClick del objeto en > cuestión, la función anterior. > var miObjeto = document.getElementById ('unControl'); > miObjeto.onclick = funcionHacerAlgo; > //acá no hice miObjeto.onclick = funcionHacerAlgo (); , porque estoy > asignando la funcion, no el resultado de la misma. > > y eso es equivalente a crear el objeto de esta forma: > <img id="miObjeto" onclick="funcionHacerAlgo ();" /> > > Y eso funciona... pero, yo quiero ejecutar una función con parámetros... ¿se > puede? Si no lo quiero hacer dinamicamente, puedo escribir: <img > id="miObjeto" onclick="funcionHacerAlgo ('param1', 'param2', > 'param3');" />y eso anda... ¿como lo hago dinamicamente?
Verás, cuando usas el atributo HTML `onclick` [^1], el intérprete de javascript _crea_ una función anónima con el contenido de la cadena como cuerpo. Cuando utilizas, en javascript, `elemento.onclick` debes ser tú quien cree la función. Tal que así: ## Manejador (usaremos el mismo) function hacerAlgo(a, b, c) { alert( [ a, b, c ].join(", ") ); } ## Situación actual: `onclick` como atributo HTML <button id="search" onclick="hacerAlgo('x', 'y', 'z');">Haz algo</button> ## Situación deseable: asignación mediante js (eliminamos el atributo HTML): HTML: <button id="search">Haz algo</button> JS: var el = document.getElementById("search"); search.onclick = function() { hacerAlgo('a', 'b', 'c'); }; Salud. [^1]: Y cualquier otro atributo HTML relacionado con el manejo de eventos. -- Choan <http://choangalvez.nom.es/> _______________________________________________ javaEScript mailing list javaEScript@scriptia.net http://lists.scriptia.net/listinfo.cgi/javaescript-scriptia.net