Drei Lösungen für Unterfunktionen, die auf externe Variablen in JavaScript zugreifen

Drei Lösungen für Unterfunktionen, die auf externe Variablen in JavaScript zugreifen

Vorwort

Wenn wir Webseiten schreiben, stoßen wir sicherlich häufig auf die folgende Situation:

<Text>
  
<div Klasse="btns-wrapper"></div>
  
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<Skript>
var Wrapper = $('.btns-Wrapper');
für(var i = 0; i < 5; i++){
 var btn = $('<button>Button' + i + '</button>').appendTo(wrapper);
 btn.on('klicken', Funktion(evt){
  console.log('Klicken Sie auf die Schaltfläche: ' + i);
 });
}
</Skript>
  
</body>

Der Code ist sehr einfach. Erstellen Sie einfach ein paar Schaltflächen auf der Seite und definieren Sie die Schaltflächenklickereignisse.

Wenn wir jedoch auf die Schaltfläche klicken, stellen wir fest, dass die erhaltene Seriennummer immer 5 ist, was der letzte Wert von i ist.

Dies liegt daran, dass die zum Definieren des Klickereignisses verwendete anonyme Funktion auf dieselbe Variable, d. h., verweist.

Lösung 1: Sofort ausführen

var Wrapper = $('.btns-Wrapper');
für(var i = 0; i < 5; i++){
 var btn = $('<button>Button' + i + '</button>').appendTo(wrapper);

 //Standardmethode //btn.on('click', function(evt){
 // console.log('Klicken Sie auf die Schaltfläche: ' + i);
 //});

 //Methode 1: Sofort ausführen btn.on('click', (function(n){
  Rückgabefunktion (evt) {
   console.log('Klicken Sie auf die Schaltfläche: ' + n);
  }
 })(ich));

}

Dieser Ansatz besteht darin, für jede Schaltfläche direkt bei der Definition des Ereignisses eine separate anonyme Funktion (Closure) zu erstellen, und jede Funktion enthält die richtige i-Variable.

Lösung 2: Verwenden Sie die jQuery-Ereignisübergabe

var Wrapper = $('.btns-Wrapper');
für(var i = 0; i < 5; i++){
 var btn = $('<button>Button' + i + '</button>').appendTo(wrapper);

 //Standardmethode //btn.on('click', function(evt){
 // console.log('Klicken Sie auf die Schaltfläche: ' + i);
 //});

 //Methode 2: Verwenden Sie den JQuery-Ereignisparameter btn.on('click', { i: i }, function(evt){
  console.log('Klicken Sie auf die Schaltfläche: ' + evt.data.i);
 });

}

Diese Methode ist viel einfacher. Sie können einfach jQuery verwenden, um den Parameterkörper an die anonyme Funktion zu übergeben.

Lösung 3: Verwenden Sie das Datenattribut von DOM

var Wrapper = $('.btns-Wrapper');
für(var i = 0; i < 5; i++){
 var btn = $('<button>Button' + i + '</button>').appendTo(wrapper);

 //Standardmethode //btn.on('click', function(evt){
 // console.log('Klicken Sie auf die Schaltfläche: ' + i);
 //});

 //Methode 3: Verwenden des Datenattributs von DOM btn.data('i', i);
 btn.on('klicken', Funktion(evt){
  console.log('Klicken Sie auf die Schaltfläche:' + $(this).data('i'));
 });

}

Auch diese Methode ist sehr einfach, hat jedoch den Nachteil, dass es nicht möglich ist, mit dem Datenattribut strukturierte Daten zu definieren.

Zusammenfassen

Im Großen und Ganzen ist die Verwendung von Ereignisparametern zum Übertragen von Variablen in einer jQuery-Umgebung am einfachsten und es können strukturierte Daten übergeben werden.

Andernfalls ist dies nur durch eine sofortige Vollstreckung (Schließung) möglich.

Dies ist das Ende dieses Artikels darüber, wie Unterfunktionen in JavaScript auf externe Variablen zugreifen. Weitere Informationen darüber, wie Unterfunktionen in JavaScript auf externe Variablen zugreifen, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Ein Artikel bringt Ihnen die Vererbung von JS-Funktionen bei
  • Wie lang ist eine Funktion in js?
  • JavaScript-Grundlagenreihe: Funktionen und Methoden
  • Verwendung der JavaScript-Sleep-Funktion
  • Ausnahmebehandlung der integrierten Funktionen json_encode und json_decode in PHP
  • So gestalten Sie Ihre JavaScript-Funktionen eleganter
  • Zusammenfassung von über 50 Hilfsfunktionen in JavaScript
  • Tiefgreifendes Verständnis der JavaScript-Rückruffunktionen
  • Grundlagen der funktionalen Programmierung in JavaScript

<<:  So implementieren Sie eine geplante Sicherung einer MySQL-Datenbank

>>:  Die Verwendung eines eindeutigen MySQL-Schlüssels in Abfragen und damit verbundene Probleme

Artikel empfehlen

Docker stellt über einen Port eine Verbindung zu einem Container her

Docker-Container-Verbindung 1. Netzwerk-Port-Mapp...

HTML-Grundlagen: HTML-Inhaltsdetails

Beginnen wir mit dem Körper: Wenn Sie eine Webseit...

Detailliertes Tutorial zur Installation von Protobuf 3 unter Ubuntu

Wann ist die Installation durchzuführen? Wenn Sie...

CSS3-Analyse der Schritte zur Erstellung des Douyin-LOGO

Auch „Tik Tok“ erfreut sich großer Beliebtheit un...

VUE implementiert Saugknopf an der Unterseite

In diesem Artikelbeispiel wird der spezifische Co...

Was bei der Migration von MySQL auf 8.0 zu beachten ist (Zusammenfassung)

Passwortmodus PDO::__construct(): Der Server hat ...

Erste Schritte mit benutzerdefinierten Anweisungen in Vue 3.0

Inhaltsverzeichnis 1. Benutzerdefinierte Anweisun...

So begrenzen Sie den Wertebereich von Objektschlüsseln in TypeScript

Wenn wir TypeScript verwenden, möchten wir das vo...

Eine kurze Diskussion über die Eigenschaften von CSS-Float

In diesem Artikel werden die Eigenschaften von CS...

Mit JS in zehn Minuten die Existenz von Elementen in einem Array bestimmen

Vorwort In der Front-End-Entwicklung müssen Sie h...

Grafisches Tutorial zur kostenlosen Installationsversion von MySQL 5.7.21 winx64

Konfigurationsmethode für die kostenlose Installa...

So lassen Sie DOSBox nach dem Start automatisch Befehle ausführen

Mit DOSBox können Sie DOS unter Windows simuliere...