Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Editando el evento onClick de un button

Estas en el tema de Editando el evento onClick de un button en el foro de Javascript en Foros del Web. Hola a todos. Estoy trabajando en una aplicación que necesita mucho Javascript y, de repente, tuve un problema respecto el hecho de editar la función ...
  #1 (permalink)  
Antiguo 06/07/2014, 08:09
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 0
Editando el evento onClick de un button

Hola a todos. Estoy trabajando en una aplicación que necesita mucho Javascript y, de repente, tuve un problema respecto el hecho de editar la función que llamaba el evento onClick de un button. Como me estaba estresando, decidí simplificarlo y hacer una prueba en un documento a parte mientras buscaba respuestas en diferentes páginas de internet pero no pude solucionar nada.

El primer script que escribí fue este:

Código Javascript:
Ver original
  1. function ejecutar1(){
  2.         document.getElementById("boton").value="Adiós";
  3.         document.getElementById("boton").onClick=ejecutar2;
  4. }
  5. function ejecutar2(){
  6.         document.getElementById("boton").value="Hola";
  7.         document.getElementById("boton").onClick=ejecutar1;
  8. }

Pero después de buscar en internet pasé a este código pero tampoco funcionó:

Código Javascript:
Ver original
  1. function ejecutar1(){
  2.         document.getElementById("boton").value="Adiós";
  3.         document.getElementById("boton").removeAttribute("onClick");
  4.         document.getElementById("boton").setAttribute("onClick",ejecutar2);
  5. }
  6. function ejecutar2(){
  7.         document.getElementById("boton").value="Hola";
  8.         document.getElementById("boton").removeAtrribute("onClick");
  9.         document.getElementById("boton").setAttribute("onClick",ejecutar1);
  10. }

También he probado con "addEventListener" pero tampoco funcionó. Por defecto, el button ejecuta la función "ejecutar1".

¿Alguien tiene alguna idea de cómo solucionarlo? Gracias :)

Última edición por blancoarnau; 06/07/2014 a las 09:09
  #2 (permalink)  
Antiguo 06/07/2014, 09:28
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Editando el evento onClick de un button

Mal de las dos formas.

onclick no se pone en camel case:

Código Javascript:
Ver original
  1. function ejecutar1(){
  2.         document.getElementById("boton").value="Adiós";
  3.         document.getElementById("boton").onclick=ejecutar2;
  4. }
  5. function ejecutar2(){
  6.         document.getElementById("boton").value="Hola";
  7.         document.getElementById("boton").onclick=ejecutar1;
  8. }

En el el siguiente mezclas HTML con JavaScript. No puedes asociar un handler a un atributo de HTML, porque éste no lo interpreta. En tal caso, y a pesar de ser poco recomendado deberías cambiarlo por:

Código Javascript:
Ver original
  1. function ejecutar1(){
  2.         document.getElementById("boton").value="Adiós";
  3.         document.getElementById("boton").setAttribute("onclick","ejecutar2()");
  4. }
  5. function ejecutar2(){
  6.         document.getElementById("boton").value="Hola";
  7.         document.getElementById("boton").setAttribute("onclick","ejecutar1()");
  8. }

Aunque finalmente deberías quedarte con addEventListener, que es el recomendado por la W3C:

Código Javascript:
Ver original
  1. function ejecutar1(){
  2.         document.getElementById("boton").value="Adiós";
  3.         document.getElementById("boton").addEventListener("click",ejecutar2,false);
  4. }
  5. function ejecutar2(){
  6.         document.getElementById("boton").value="Hola";
  7.         document.getElementById("boton").addEventListener("click",ejecutar1,false);
  8. }

Saludos

Última edición por PHPeros; 06/07/2014 a las 09:34
  #3 (permalink)  
Antiguo 06/07/2014, 09:57
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Editando el evento onClick de un button

Gracias por contestar. Pues usaré addEventListener aunque no entiendo porque en la línea 3 has escrito "click" en vez de "onclick". Tampoco entiendo qué es un "handler".

Acabo de probarlo y no funciona del todo bien. Funciona los primeros tres clicks, pero después el botón se queda igual: http://jseditor.proyectosbds.com/oyiroz/1/edit

Última edición por blancoarnau; 06/07/2014 a las 10:04
  #4 (permalink)  
Antiguo 06/07/2014, 11:01
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Editando el evento onClick de un button

Cita:
Iniciado por blancoarnau Ver Mensaje
Gracias por contestar. Pues usaré addEventListener aunque no entiendo porque en la línea 3 has escrito "click" en vez de "onclick". Tampoco entiendo qué es un "handler".

Acabo de probarlo y no funciona del todo bien. Funciona los primeros tres clicks, pero después el botón se queda igual: http://jseditor.proyectosbds.com/oyiroz/1/edit
Porque se excluye la parte on-, es decir, solo se pone el nombre del evento.

Un handler es un manejador del evento, una función.

Ahora que sabemos lo que quieres hacer, hay formas mejores de hacerlo:

  #5 (permalink)  
Antiguo 07/07/2014, 10:02
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Editando el evento onClick de un button

Muchas gracias. Era todo lo que necesitaba :)

Etiquetas: button, evento, funcion, onclick
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:42.