Heim >Web-Frontend >js-Tutorial >Diskussion über die Übergabe von Javascript-Abschlussparametern und die Bindung von Ereignisschleifen. Beispiele_Javascript-Kenntnisse

Diskussion über die Übergabe von Javascript-Abschlussparametern und die Bindung von Ereignisschleifen. Beispiele_Javascript-Kenntnisse

WBOY
WBOYOriginal
2016-05-16 16:52:011056Durchsuche

Heute habe ich eine Javascript-Frage gesehen, die Ereignisse gemäß dem gesunden Menschenverstand in einer Schleife verknüpfte, aber das Ergebnis war nicht das, was ich wollte.

Code kopieren Der Code lautet wie folgt:



link
var as = document.getElementsByTagName('a ');
for ( var i = as.length; i--; ) {
as[i].onclick = function() {
return false; 🎜>}
}




Um es einfach auszudrücken: Es handelt sich um ein Funktionsvariablenbereichsproblem. Wenn function() { warning(i); die Variable i nicht intern definiert ist a(), aber es wird intern verwendet, also habe ich das in der for-Schleife definierte i gefunden. Die Ausführung des Click-Ereignisses begann, nachdem die for-Schleife abgeschlossen war. 1; also ist es jedes Mal -1;
2. Die for-Schleife mit 2 Parametern ist auch nicht üblich! Verwechseln?

 for (Anweisung 1, Anweisung 2, Anweisung 3) {

  //todo

 }

a.for-Schleifenbedingung

Im Allgemeinen sind Aussage 1, Aussage 2 und Aussage 3 alle optional.

b. Aussage 2:

Normalerweise wird Aussage 2 verwendet, um die Bedingungen der Anfangsvariablen auszuwerten.

Aussage 2 ist ebenfalls optional.

Wenn Anweisung 2 „true“ zurückgibt, beginnt die Schleife erneut, wenn sie „false“ zurückgibt, wird die Schleife beendet.

Tipp: Wenn Sie Anweisung 2 weglassen, müssen Sie eine Pause innerhalb der Schleife einbauen. Andernfalls kann der Zyklus nicht gestoppt werden. Dies kann zum Absturz des Browsers führen.

c. Bezüglich i--Urteil:

Bei der Beurteilung von i--wahr/falsch wird zuerst i-- beurteilt und dann i-- berechnet. Bei der Eingabe des letzten Urteils von i--, als i==0 tatsächlich beurteilt wurde, wurde i-- nach dem Urteil erneut ausgeführt und die for-Schleife beendet, sodass der Wert von i zu -1 wurde; var i = 1;

 !!i--;//ture

Lösung:




Code kopieren


Der Code lautet wie folgt: return false;
}
})(i)
}


Oder:




Code kopieren


Der Code lautet wie folgt:return false; 🎜>Andere Internetnutzer haben es in der 7-Methoden-Demo gelöst:




Code kopieren


Der Code lautet wie folgt:


< ;head> title>Closure Demonstration

Produkt Zwei< /p>

Produkt drei

🎜>< /body> 1. Speichern Sie die Variable i für jedes Absatzobjekt (p)

Code kopieren


Der Code lautet wie folgt:


function init() {
var pAry = document.getElementsByTagName("p"); >for( var i=0; ipAry[i].i = i;
pAry[i].onclick = function() {
alert(this. i);
}
}


2. Speichern Sie die Variable i in der anonymen Funktion selbst




Kopieren Code


Der Code lautet wie folgt:

function init2() {
var pAry = document.getElementsByTagName("p");
for( var i=0; i(pAry [i].onclick = function() {
alert(arguments.callee.i);
}).i = i;
}
}

3 , fügen Sie eine Abschlussschicht hinzu und i wird in Form von Funktionsparametern an die innere Funktion übergeben
Code kopieren Der Code ist wie folgt:

function init3() {
var pAry = document.getElementsByTagName("p");
for( var i=0; i(function( arg){
pAry[i].onclick = function() {
alert(arg);
};
})(i);//Parameter wann Aufruf
}
}

4. Fügen Sie eine Abschlussschicht hinzu und übergeben Sie i in Form einer lokalen Variablen
Code kopieren Der Code lautet wie folgt:

function init4() {
var pAry = document.getElementsByTagName("p");
for( var i=0; i(function () {
var temp = i; //Lokale Variable beim Aufruf
pAry[i].onclick = function() {
alert(temp);
})();
}
}

5 Gibt eine Funktion als Antwortereignis zurück (beachten Sie den subtilen Unterschied zu 3)

Code kopieren Der Code lautet wie folgt:
function init5() {
var pAry = document .getElementsByTagName("p");
for( var i=0; ipAry[ i].onclick = function(arg) {
return function() { //Eine Funktion zurückgeben
alert(arg);
}(i); }


6. Verwenden Sie die Funktion zum Implementieren. Tatsächlich wird jedes Mal, wenn eine Funktionsinstanz generiert wird, ein Abschluss generiert



Code kopieren
Der Code lautet wie folgt: function init6() { var pAry = document.getElementsByTagName("p");
for( var i= 0; ipAry[i].onclick = new Function ("alert(" i ");");//new generiert jeweils eine Funktionsinstanz
}
}


7. Verwenden Sie die Funktion zur Implementierung, achten Sie auf den Unterschied zu 6



Code kopieren
Der Code lautet wie folgt: function init7() { var pAry = document("p"); .length; i ) {
pAry[i].onclick = Function('alert(' i ')')
}
}


Die Zusammenfassung ist vollständig, willkommen Mitmachen!
Stellungnahme:
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
Vorheriger Artikel:Das Kontrollkästchen für das Jquery-Kontrollkästchen erkennt die Beurteilung vor der Löschung_jqueryNächster Artikel:Das Kontrollkästchen für das Jquery-Kontrollkästchen erkennt die Beurteilung vor der Löschung_jquery

In Verbindung stehende Artikel

Mehr sehen