Maison > interface Web > js tutoriel > le corps du texte

Concernant le problème infructueux de la transmission des paramètres lors de l'enregistrement javascript, cliquez sur event_javascript skills

WBOY
Libérer: 2016-05-16 16:41:39
original
1035 Les gens l'ont consulté

En tant que programmeur Java au cours des six derniers mois, j'ai écrit plus de code JavaScript que de code Java. Il y a quelque temps, je construisais un système de contrôle de guichet pour une banque, en raison des besoins d'autorisation de guichet. Compte tenu de divers facteurs, tels que les autorisations organisationnelles, les autorisations de type caissier, les autorisations de poste, les autorisations commerciales, etc., ces autorisations doivent être croisées ou combinées plusieurs fois, et beaucoup de JavaScript doit être utilisé sur la page pour le contrôle. Cela a abouti à une situation dans laquelle le code javaScript est plus responsable de l'implémentation de ce module fonctionnel que le code java.

Nous devons maintenant développer un système de gestion de coffre-fort pour une banque. Ses blocs fonctionnels de base sont la gestion des coffres-forts et la gestion des coffres-forts afin d'obtenir des fonctions de gestion aussi intuitives et pratiques que le C/S. Architecture, il traitera également les résultats.Affichage en temps réel à l'opérateur.Après plusieurs jours de réflexion et d'expérimentation, nous avons finalement utilisé CSS javaScript java pour le développement, java pour gérer la logique métier, CSS pour exprimer les différents états de l'objet cible, et javaScript pour se baser sur l'état de l'objet cible Transform pour réaliser sa commutation CSS.

J'ai rencontré un problème ici, c'est-à-dire lors de l'enregistrement d'une fonction de gestionnaire d'événements de clic pour un élément html en JavaScript, par exemple en passant 3 paramètres à la fonction de gestionnaire. Cependant, que vous utilisiez ou non la méthode suivante (le nœud représente le nœud pour enregistrer l'événement, fun est la fonction de traitement d'événement), vous ne pouvez pas transmettre de paramètres à la fonction de traitement d'événement :

node.addEventListener('click', fun, false); 
node.attachevent('onclick', fun);
Node['onclick']=fun
Copier après la connexion

Évidemment aucune des méthodes ne fonctionne. Veuillez noter que l'écriture est incorrecte :

node.addEventListener('click', fun(arg1,arg2,arg3), false); 
node.attachevent('onclick', fun(arg1,arg2,arg3)); 
Node['onclick']=fun(arg1,arg2,arg3)
Copier après la connexion

Heureusement, j'ai lu un livre "JavaScript.DOM Advanced Programming" et j'ai trouvé une solution dans ce livre. Écrivez d’abord une méthode :

function bindFunction(obj, func){ 
var args = []; 
for(var i =2; i < arguments.length; i++) { 
args.push(arguments[i]);
} 
return function(){ 
func.apply(obj, args);
}; 
};
Copier après la connexion

Ajoutez ensuite les deux méthodes suivantes dans votre propre bibliothèque js. Si vous ne comprenez rien, vous pouvez vous référer à "JavaScript.DOM Advanced Programming". J'ai ajouté quelques modifications :

function bindFunction(obj, func){ 
var args = []; 
for(var i =2; i < arguments.length; i++) {
args.push(arguments[i]);
}
return function(){
func.apply(obj, args);
};
}; 
window['OYF_MARK']['bindFunction'] = bindFunction; 
function addEvent(node, type, listener){
//使用前面的方法检查兼容性以保证平稳退化
if (!isCompatible()) {
return false
} 
if (!(node = $(node))) 
return false;
if (node.addEventListener) { 
//W3C的方法(冒泡事件,如果将false改为true,则为捕获事件) 
node.addEventListener(type, listener, false); 
return true;
}
else
if (node.attachEvent) { 
//MSIE的方法 
node['e' + type + listener] = listener;
node[type + listener] = function(){
node['e' + type + listener](window.event);
} 
node.attachEvent('on' + type, node[type + listener]); 
return true; 
}
//若两种方法都不具备则返回false 
return false;
};
window['OYF_MARK']['addEvent'] = addEvent;
Copier après la connexion

Les deux fonctions ci-dessus ont été légèrement modifiées par moi sur la base du code source dans "JavaScript.DOM Advanced Programming" et ajoutées à l'une de mes propres bibliothèques js pour être réutilisées. Ensuite, vous pouvez utiliser la méthode suivante pour enregistrer des événements pour des éléments et transmettre des paramètres à la fonction de traitement des événements :

//注册新的onclick事件处理函数
OYF_MARK.addEvent(e,'click',OYF_MARK.bindFunction(e,getContainerDetail,x,y,containid));
Copier après la connexion
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!