J'ai un bouton radio, contenant une ligne onclick
événement:ajouter Fiable à un événement Javascript
<input type="radio" class="quantitycheckbox" onclick="alterQuantity(this.form)">
Je suis en train de discrètement ajouter un peu plus de fonctionnalités sur clic, et ont ce code:
function updateCustomFields(box) {
// save current onclick event before assigning new one
var currEvent = box.onclick;
box.onclick = function() {
currEvent();
// do additional stuff here
}
}
var boxes = $class('quantitycheckbox');
for(var i = 0; i < boxes.length; i++) {
updateCustomFields(boxes[i]);
}
Toutefois, la valeur de this.form
transmise à la fonction alterQuantity
n'est pas définie et une erreur se produit. Comment préserver l'événement onclick
tel quel et ajouter mes fonctionnalités?
Comment est-ce la bonne façon? Et où est-il documenté qu'un gestionnaire d'événements défini via la propriété 'onclick' est garanti de se déclencher en premier dans tous les navigateurs? –
@Tim, les événements sont toujours exécutés dans l'ordre. Comme les gestionnaires onclick en ligne sont d'abord "enregistrés" (vous ne pouvez pas ajouter d'événement à un élément DOM tant qu'il n'existe pas, et dès qu'il existe, le gestionnaire inline est déjà attaché à l'élément). C'est la manière * correcte * à cause de la force avec laquelle je pense que la logique doit être séparée de la structure. Je pense que je voulais être entre guillemets donc ça révèle mon parti pris ... Je vais éditer :) –
L'interaction entre les événements en ligne et la norme W3 DOM Events (sans parler du mess d'IE) n'est pas normalisée du tout. Bien que lorsque IE, Mozilla, WebKit et Opera sont tous d'accord sur quelque chose que vous êtes généralement sur un gagnant. – bobince