一、var定义变量的方法:

var btns=document.querySelectorAll('button');
for(var i = 0;i<btns.length;i++){
     btns[i].οnclick=function(){
         alert('点击了第'+i+'个按钮');     

    点击按钮后弹出的都是第4个,原因是var定义变量i作用域造成的。

解决方法:

(1)、let定义变量的方法:

let btns=document.querySelectorAll('button');
for(let i = 0;i<btns.length;i++){
     btns[i].οnclick=function(){
         alert('点击了第'+i+'个按钮');     

以上写法在IE浏览区不支持,其他的浏览器支持,点击按钮能取到需要的值。

(2)、var定义变量的方法:

var btns=document.querySelectorAll('button');
for(var i = 0;i<btns.length;i++){
     (function(i){
         btns[i].οnclick=function(){
             alert('点击了第'+i+'个按钮');     
     })(i);
}  
以上写法支持IE浏览器 有5个按钮:&amp;lt;div&amp;gt; &amp;lt;button&amp;gt;按钮1&amp;lt;/button&amp;gt; &amp;lt;button&amp;gt;按钮2&amp;lt;/button&amp;gt; &amp;lt;button&amp;gt;按钮3&amp;lt;/button&amp;gt; &amp;lt;button&amp;gt;按钮4&amp;lt;/button&amp;gt; <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>闭包演示</title> </head> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> [removed] [removed]=function() { var ps = docum var json = { top: '400px', width: '500px', height: '300px' }; var data = {};//在外面定义对象 var datas = []; for (key in json) { data.nam... for (var i =5; i >= 0; i--) { // console.log(i);//5 4 3 2 1 0 // console.log(this);//window对象 for (var j =5; j >= 0; j--) { // console.log(i);5 4 3 2 1 0各六遍 但是结果却不尽人意,总是弹出“6----果敢”,比较好的解决方法有以下几种: 1、使用闭包 var els = document.getElementsByTagName("li"); for (i = 0; i < els.length; i++) { var el = els[i
在做项目时遇到了一个关于遍历的问题, 前提是:在ul有n个li每个li从后台获取的数据一个sign的字段,当sign等于0时(li未被点击过)li会显示一个红点,当sign不等于0时(li已被点击)红点会消失,开始时的代码是这样的 for(var i=0;i<data.length;i++){   if(data[i].sign==0){     $api.addCl...
var dataSet = ["首页", "博客", "下载"] for (var i = 0; i < dataSet.length; i++) { var item = dataSet[i]; setTimeout(function () { con...
通过异步获取数据,往echart图显示,但是每次异步,每次获取数据都不一样,只获取最后一个的数据 for(i=0;i<=4;i++){ var myChart = echarts.init(document.getElementById('echarts' + i)); myChart.setOption({ title : { text : "", x : 'ce...
const test = { dd: '444', fff: '555', ggg: '0' } testArr.forEach(item => { test.ggg = item.cc arr.push(test) console.log('arr', ar     public static void main(String[] arg0){         List&lt;User&gt; userList=new ArrayList&lt;User&gt;();         User user=new User();