Heim > Web-Frontend > js-Tutorial > Hauptteil

Bezüglich des erfolglosen Problems der Übergabe von Parametern im JavaScript-Registrierungsklickereignis

高洛峰
Freigeben: 2017-02-16 17:19:52
Original
903 Leute haben es durchsucht

Wenn Sie beispielsweise eine Click-Event-Handler-Funktion für ein HTML-Element in JavaScript registrieren, übergeben Sie 3 Parameter an die Handler-Funktion. Unabhängig davon, welche Methode verwendet wird, können Parameter jedoch nicht an die Ereignisverarbeitungsfunktion übergeben werden.

Als Java-Programmierer habe ich in den letzten sechs Monaten mehr JavaScript-Code als Java-Code geschrieben war für eine Bank. Um ein Kassiererverwaltungs- und -kontrollsystem aufzubauen, müssen im Hinblick auf die Kassiererautorisierung verschiedene Faktoren für die Kassiererautorisierung berücksichtigt werden, wie z. B. Organisationsautorität, Kassierertypautorität, Positionsautorität, Geschäftsautorität usw. und diese Autorität Die Schnitt- oder Vereinigungsverarbeitung muss mehrmals auf der Seite zur Steuerung 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ßfachbasisverwaltung und die Schließfachverwaltung Die C/S-Architektur und die Verarbeitungsergebnisse werden dem Bediener in Echtzeit angezeigt. Nach mehreren Tagen des Nachdenkens und Experimentierens wurde schließlich CSS+JavaScript+Java für die Entwicklung verwendet, Java wurde zur Verarbeitung der Geschäftslogik verwendet und CSS wurde verwendet Um verschiedene Zustände des Zielobjekts auszudrücken, wird JavaScript verwendet, um entsprechend dem Zustandsübergang des Zielobjekts dessen CSS-Umschaltung zu implementieren.

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, welche Methode verwendet wird (Knoten stellt den Knoten dar, der das Ereignis registriert, Spaß macht die Ereignisverarbeitungsfunktion), können keine Parameter an die Ereignisverarbeitungsfunktion übergeben werden:

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

Offensichtlich funktioniert keine der Methoden:

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

Zum Glück habe ich Ich habe ein Buch „JavaScript.DOM Advanced“ Programming gelesen und in diesem Buch die 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 js-Bibliothek hinzu. Wenn Sie nichts verstehen, können Sie auf JavaScript zurückgreifen .DOM Advanced Programming“, Abschnitt 2.3 des Buches, enthält eine Erklärung dieser Methode, ich habe jedoch einige Ä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[&#39;OYF_MARK&#39;][&#39;bindFunction&#39;] = 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[&#39;e&#39; + type + listener] = listener;
node[type + listener] = function(){
node[&#39;e&#39; + type + listener](window.event);
} 
node.attachEvent(&#39;on&#39; + type, node[type + listener]); 
return true; 
}
//若两种方法都不具备则返回false 
return false;
};
window[&#39;OYF_MARK&#39;][&#39;addEvent&#39;] = addEvent;
Nach dem Login kopieren

Die beiden oben genannten Funktionen Ich habe den Quellcode in „JavaScript.DOM Advanced Programming“ leicht modifiziert und ihn zur Wiederverwendung einer eigenen js-Bibliothek 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,&#39;click&#39;,OYF_MARK.bindFunction(e,getContainerDetail,x,y,containid));
Nach dem Login kopieren

Weitere verwandte Artikel über das erfolglose Problem der Parameterübergabe bei der JavaScript-Registrierung click event Bitte achten Sie auf die chinesische PHP-Website!

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!