En primer lugar, haga referencia a https://www.jb51.net/article/158651.htm (el hogar del guión)
Las tres características principales de los cierres son:
1. Función función anidada
2. Las funciones internas pueden acceder a variables de funciones externas
3. Los parámetros y las variables no se recuperarán.
Requisito: cuando hace clic en li, ingresará el índice correspondiente de li
Ejemplo: código de error 1
La salida será el índice de la última li porque el navegador cargará todos los elementos al principio y onclick solo cargará la i cuando se haga clic en ella. Será incorrecto.
var hs = document.getElementById ("ID de etiqueta html" ); var lists = hs.children; for ( var i = 0; i <lists.length; i ++ ) { var li = lists [i]; // imprimir en este momento El i correspondiente a li es definitivamente incorrecto. Seré el último valor li.onclick = function () { console.log (i); // El último número de i que se imprimió en este momento } }}
Ejemplo: solución
var hs = document.getElementById ("html 标签 ID" ); listas var = hs.children; para ( var i = 0; i <lists.length; i ++ ) { var li = lists [i]; li.index = i; // 为 每个 li 绑定 i li.onclick = function () { console.log ( this .i); // 输出 this.li } }
Ejemplo: solución de cierre
var hs = document.getElementById (" htmltag ID" ); var lists = hs.children; for ( var i = 0; i <lists.length; i ++ ) { var li = lists [i]; ( function (i) { // Los parámetros característicos del cierre no desaparecerán inmediatamente después de usarse li.onclick = function () { console.log (i); } }) (i); }