Heim > Web-Frontend > js-Tutorial > Wie kann ich Abschlussprobleme beim Zuweisen von Click-Handlern in JavaScript-Schleifen vermeiden?

Wie kann ich Abschlussprobleme beim Zuweisen von Click-Handlern in JavaScript-Schleifen vermeiden?

Patricia Arquette
Freigeben: 2024-12-01 07:16:21
Original
910 Leute haben es durchsucht

How Can I Avoid Closure Issues When Assigning Click Handlers in JavaScript Loops?

Behebung von Abschlussproblemen bei der Zuweisung von Klick-Handlern innerhalb von Schleifen

Beim Zuweisen von Klick-Handlern zu mehreren Elementen in einer Schleife entsteht eine häufige Gefahr aufgrund von Abschlüssen in JavaScript. Der bereitgestellte Code weist dieses Problem auf:

$(document).ready(function(){
  for(var i = 0; i < 20; i++) {
    $('#question' + i).click( function(){
      alert('you clicked ' + i);
    });
  }
});
Nach dem Login kopieren

Dieser Code zielt darauf ab, den Index des angeklickten Elements anzuzeigen, wenn ein Klick erfolgt. Allerdings wird bei jedem Klick fälschlicherweise „Sie haben auf 20 geklickt“ angezeigt, anstatt den tatsächlichen Index anzuzeigen. Dieses Verhalten ist auf den in der Schleife erzeugten Abschluss zurückzuführen.

Lösung: Einsatz von Callback-Funktionen

Um dieses Problem zu beheben, können wir Callback-Funktionen wie unten gezeigt verwenden:

function createCallback( i ){
  return function(){
    alert('you clicked' + i);
  }
}

$(document).ready(function(){
  for(var i = 0; i < 20; i++) {
    $('#question' + i).click( createCallback( i ) );
  }
});
Nach dem Login kopieren

In dieser aktualisierten Version wird innerhalb der Schleife eine Callback-Funktion erstellt. Diese Funktion erfasst den aktuellen Wert von „i“ und stellt sicher, dass der richtige Index angezeigt wird, wenn auf das Element geklickt wird.

Nutzung des let-Schlüsselworts von ES6

Wenn die ES6-Syntax verfügbar ist, können wir das verwenden let-Schlüsselwort, um das gleiche Ergebnis prägnanter zu erzielen:

for(let i = 0; i < 20; i++) {
  $('#question' + i).click( function(){
    alert('you clicked ' + i);
  });
}
Nach dem Login kopieren

Das let-Schlüsselwort stellt sicher, dass „i“ lokal innerhalb der Schleife gültig ist, wodurch ein Schließen vermieden wird Probleme und Anzeige des korrekten angeklickten Index bei der Aktivierung jedes Elements.

Das obige ist der detaillierte Inhalt vonWie kann ich Abschlussprobleme beim Zuweisen von Click-Handlern in JavaScript-Schleifen vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage