Heim > Web-Frontend > js-Tutorial > Hauptteil

Bezüglich des erfolglosen Problems der Übergabe von Parametern bei der JavaScript-Registrierung klicken Sie auf event_javascript skills

WBOY
Freigeben: 2016-05-16 16:41:39
Original
1035 Leute haben es durchsucht

Als Java-Programmierer habe ich in den letzten sechs Monaten aufgrund der Anforderungen an die Bankautomatisierung mehr JavaScript-Code als Java-Code geschrieben Unter Berücksichtigung verschiedener Faktoren wie Organisationsberechtigungen, Kassierertypberechtigungen, Positionsberechtigungen, Geschäftsberechtigungen usw. müssen diese Berechtigungen mehrfach überschnitten oder kombiniert werden, und auf der Seite muss zur Steuerung viel JavaScript verwendet werden. Dies hat dazu geführt, dass der JavaScript-Code stärker für die Implementierung dieses Funktionsmoduls verantwortlich ist als der Java-Code.

Jetzt müssen wir ein Schließfachverwaltungssystem für eine Bank entwickeln. Seine Kernfunktionsblöcke sind die Schließfachverwaltung und die Schließfachverwaltung, um Verwaltungsfunktionen zu erreichen, die so intuitiv und komfortabel sind wie das C/S In der Architektur werden die Ergebnisse auch in Echtzeit für den Bediener angezeigt. Nach mehreren Tagen des Nachdenkens und Experimentierens haben wir schließlich JavaScript für die Entwicklung, Java für die Verwaltung der Geschäftslogik und CSS für die Darstellung verschiedener Zustände des Zielobjekts verwendet. und JavaScript, um basierend auf dem Status des Zielobjekts dessen CSS-Umschaltung zu erreichen.

Ich bin hier auf ein Problem gestoßen, nämlich beim Registrieren einer Click-Event-Handler-Funktion für ein HTML-Element in JavaScript, beispielsweise bei der Übergabe von 3 Parametern an die Handler-Funktion. Unabhängig davon, ob Sie die folgende Methode verwenden (Knoten stellt den Knoten dar, der das Ereignis registriert, Spaß macht die Ereignisverarbeitungsfunktion), können Sie der Ereignisverarbeitungsfunktion keine Parameter übergeben:

node.addEventListener('click', fun, false); 
node.attachevent('onclick', fun);
Node['onclick']=fun
Nach dem Login kopieren

Offensichtlich funktioniert keine der Methoden. Bitte beachten Sie, dass die Schreibweise falsch ist:

node.addEventListener('click', fun(arg1,arg2,arg3), false); 
node.attachevent('onclick', fun(arg1,arg2,arg3)); 
Node['onclick']=fun(arg1,arg2,arg3)
Nach dem Login kopieren

Glücklicherweise habe ich ein Buch „JavaScript.DOM Advanced Programming“ gelesen und in diesem Buch eine Lösung gefunden. Schreiben Sie zunächst eine Methode:

function bindFunction(obj, func){ 
var args = []; 
for(var i =2; i < arguments.length; i++) { 
args.push(arguments[i]);
} 
return function(){ 
func.apply(obj, args);
}; 
};
Nach dem Login kopieren

Fügen Sie dann die folgenden beiden Methoden zu Ihrer eigenen js-Bibliothek hinzu. Wenn Sie nichts verstehen, können Sie sich auf „JavaScript.DOM Advanced Programming“ beziehen. Eine Erklärung dieser Methode finden Sie jedoch Ich habe ein paar Änderungen hinzugefügt:

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;
Nach dem Login kopieren

Die beiden oben genannten Funktionen wurden von mir basierend auf dem Quellcode in „JavaScript.DOM Advanced Programming“ leicht modifiziert und zur Wiederverwendung einer meiner eigenen js-Bibliotheken hinzugefügt. Als nächstes können Sie die folgende Methode verwenden, um Ereignisse für Elemente zu registrieren und Parameter an die Ereignisverarbeitungsfunktion zu übergeben:

//注册新的onclick事件处理函数
OYF_MARK.addEvent(e,'click',OYF_MARK.bindFunction(e,getContainerDetail,x,y,containid));
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!