2011-04-21 13 views
6

en.onclick = setCookie('english');Onclick es despedido sin hacer clic

Por qué ¿Esto puede despedido sin siquiera hacer clic en él?

tengo 3 banderas que deben establecer una cookie a su lengua cuando se hace clic ingenio el último siempre es despedido de inmediato ...

+0

Podría quizá pegar algo de código? –

Respuesta

17

Su código anterior evalúa setCookie('english') y pone su valor devuelto (si lo hay) en en.onclick. Con el fin de asignarlo como un controlador de eventos, envolverlo en una función:

en.onclick = function(){ 
    setCookie('english'); 
}; 
+0

Ok, lo entiendo. ¿Cómo se puede diferenciar entre uno pasar algo a una función (como lo hace aquí) o evaluarlo (como yo lo hice) – Jarco

+2

@Jarco Ya que está trabajando con una devolución de llamada, siempre necesita dar una función para llamar. Los manejadores de eventos siempre esperan una devolución de llamada. – JohnP

+0

Probablemente una pregunta de principiante: ¿Qué quiere decir con devolución de llamada? – Jarco

4

causa debe utilizar algo así

en.onclick=function(){ 
    setCookie('english'); 
} 
3

Debido a que usted 'invocando el método setCookie(...). Pruebe esto:

en.onclick = setCookie; 

Con los corchetes invoca el método; sin que lo estés entregando como un objeto.

O pruebe esto:

en.onclick = function() { setCookie('english') }; 

Aquí creamos una nueva función que llama setCookie con el argumento apropiado.

2

Bueno, eso se debe a que se está ejecutando el método y asignar el resultado a en.onclick.

Lo que probablemente quiere hacer con nosotros

en.onclick = function(){setCookie('english');}; 
Cuestiones relacionadas