Por lo que yo sé, no se puede agregar dos manipuladores onclick de un elemento en absoluto.
Say obj es un elemento, luego la propiedad onclick de obj se considera una función y luego se llama como método cada vez que se produce ese evento. Si no es una función, no pasará nada.
JavaScript heredado de Scheme una propiedad muy interesante, en JavaScript no define funciones como en PHP o C. Crea funciones anónimas y las almacena en una variable. Javascript es 'Lisp-1', no hay identificadores de funciones, hay variables que pueden contener números, matrices y funciones.
function name(arg) {return arg;}
es que si no me equivoco verdaderamente azúcar para:
name = function(arg) {return arg;};
'nombre' aquí es una variable, también puede volver a asign que no importa cómo definimos esa función. A diferencia del modelo de objetos de Java, en Javascript, un 'método' es puramente una propiedad, una variable que simplemente contiene una función que puede o no usar la palabra clave 'this'. Es por eso que no puede tener dos eventos onclick al mismo tiempo. El entorno de tiempo de ejecución simplemente llama a la propiedad (que se espera albergue una función) del elemento llamado 'onclick' cada vez que hace clic en él. Véalo como el mismo comportamiento tipo ad hoc de invocar 'main' para iniciar un programa.
Para asignar múltiples controladores de eventos, utiliza una función con un efecto secundario, como.
obj.onclick = function {firstEvent();secondEvent();}
Para cambiarlo o quitarlo, lo reasignamos o desasignamos como cualquier variable.
obj.onclick = null;
Y en caso de que tengan que invocar que el comportamiento de otra manera:
obj.onclick();
También podemos utilizar esto en función de que, por supuesto, cambiar el objeto en sí mismo o hacer referencia a ella.
Editar: Oh, espera, ahora veo que te refieres a un botón con muchos botones diferentes.
Bueno, entonces usted acaba de recoger todos los elementos como:
allElements = document.getElementsByTagName('*');
Y a continuación, utiliza un bucle:
var i = 0; while(obj = allElements[i++]) obj.onclick = null;
(y no, que = único no es un error tipográfico)
¿Está utilizando el atributo onclick en línea? – Mottie
+1 Gran pregunta. –
Una opción mejor y más directa es usar la solución de @jiggy http://stackoverflow.com/questions/803936/how-to-clear-remove-javascript-event-handler – chowey