En tant que programmeur Java au cours des six derniers mois, le code JavaScript que j'ai écrit est presque plus que le code Java. Il y a quelque temps, j'ai construit un système de gestion et de contrôle des caissier pour une banque. En fonction de l'autorisation des condevanes, divers facteurs doivent être pris en considération, tels que l'autorité organisationnelle, l'autorité de type caissier, l'autorité professionnelle, l'autorité commerciale, etc., et cette autorité doit être croisée ou syndiquée, et de nombreux JavaScript doivent être utilisés sur la page pour le contrôler. Cela a rendu le code JavaScript plus responsable de l'implémentation de ce module fonctionnel que le code Java.
Désormais, un système de gestion de boîte sûre est développé pour une banque. Its core functional blocks, safe box seat management and safe box management, in order to realize the management functions as intuitive and convenient as the C/S architecture, and display the processing results to the operator in real time, after several days of thinking and experimentation, finally, CSS+javaScript+java is used to develop, Java is used to process business logic, CSS is used to express various states of the target object, and JavaScript is used to realize the switching de son CSS en fonction de la transition d'état de l'objet cible.
Un problème rencontré est que lors de l'enregistrement d'un gestionnaire d'événements de clic pour un élément HTML dans JavaScript, par exemple, passant 3 paramètres au gestionnaire. Cependant, peu importe l'utilisation de la méthode suivante (le nœud signifie le nœud pour enregistrer l'événement, et le plaisir est la fonction de gestion des événements), il ne peut pas transmettre des paramètres à la fonction de gestion des événements:
node.addeventListener ('click', fun, false); Node.attachevent ('onclick', amusant); node ['onclick'] = amusantDe toute évidence, la méthode n'est pas bonne, alors veuillez noter que la méthode d'écriture est incorrecte:
node.addeventListener ('click', fun (arg1, arg2, arg3), false); Node.Attachevent ('onclick', Fun (Arg1, Arg2, Arg3)); Nœud ['onclick'] = fun (arg1, arg2, arg3)Heureusement, j'ai lu un livre intitulé "JavaScript.dom Advanced Programming" et j'ai trouvé une solution dans ce livre. Écrivez d'abord une méthode:
fonction bindFunction (obj, func) {var args = []; for (var i = 2; i <arguments.length; i ++) {args.push (arguments [i]);} return function () {func.Apply (obj, args);}; };Ajoutez ensuite les deux méthodes suivantes à votre bibliothèque JS. Si vous ne comprenez pas, vous pouvez vous référer à "JavaScript.dom Advanced Programming Design". La section 2.3 du livre contient une explication de cette méthode, mais j'ai ajouté quelques modifications:
fonction bindFunction (obj, func) {var args = []; for (var i = 2; i <arguments.length; i ++) {args.push (arguments [i]);} return function () {func.Apply (obj, args);};}; fenêtre ['oyf_mark'] ['bindFunction'] = bindFunction; Fonction ADDEVENT (Node, type, écouteur) {// Utilisez la méthode précédente pour vérifier la compatibilité pour assurer une dégradation en douceur if (! isCompatible ()) {return false} if (! (node = $ (node))) return false; if (node.addeventListener) {// Méthode W3C (événement bubble, si false est changé en true, c'est un événement de capture) node.addeventListener (type, écouteur, false); return true;} elseif (node.attachevent) {// méthode MSIE node ['e' + type + écouteur] = écouteur; node [type + écouteur] = function () {node ['e' + type + écouteur] (window.event);} node.attachevent ('on' + type, node + écouteur]); Retour Vrai; } // Si aucune méthode n'est disponible, return false return false;}; window ['oyf_mark'] ['addEvent'] = addEvent;Les deux fonctions ci-dessus ont été légèrement modifiées à partir du code source dans "JavaScript.dom Advanced Programming" et ajoutés à l'une de ma propre bibliothèque JS pour réutiliser. Ensuite, vous pouvez enregistrer des événements à l'élément et passer les paramètres à la fonction du gestionnaire d'événements de la manière suivante:
// Enregistrez la nouvelle fonction ONClick Event Handler OYF_MARK.ADDEVENT (E, 'CLICK', OYF_MARK.BindFunction (E, GetContainerDetail, X, Y, contend));