关于闭包:
<html> <body> <div> <div> <button >aaa</button> <button >bbb</button> <button >ccc</button> </div> </div> <script type="text/javascript">
// script 的 type="text/javascript" 可以省略 不写,但是如果写,必须 type="text/javascript"
var btns = document.getElementsByTagName("button"); alert(btns) var start = 100; // start = 0; for(var i = start; i< btns.length; i++ ) { btns[i].onclick = function() { alert(i);// 这样的写法有问题, 即 闭包问题 } } start = 100; //start = 0; for(var i =start; i< btns.length; i++ ) { (function(i) { // 奇怪的 闭包的 写法, 需要匿名函数, 首先外面一堆(), 然后匿名函数,一个形式参数i, 然后立即调用匿名函数,实际 参数 仍然是 i 。。。 btns[i].onclick = function() { alert(i); } }) (i); } start = 0; for(let i =start; i< btns.length; i++ ) { // 一个let 关键字,轻松解决问题!! btns[i].onclick = function() { alert("eeeee" + i); } } </script> </body> </html>