博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4种方法解决为 li列表 添加事件问题
阅读量:4593 次
发布时间:2019-06-09

本文共 1426 字,大约阅读时间需要 4 分钟。

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="UTF-8">
<title>4种方法解决为li添加事件问题</title>
<style type="text/css">
ul li{
list-style: none;
width: 200px;
height: 50px;
line-height: 50px;
text-align: center;
margin: 10px;
border: 1px solid red;
}
</style>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</body>
<script type="text/javascript">
var lis = document.querySelectorAll("li");
/*
此时得到的是lis.length的值,这是问题的症结所在
 */
/*
这种问题的本质就是利用var声明的 i 是一个全局变量,全局变量在for执行时会得到最后一个数值(lis.length),所以会产生得不到每个中间值,
解决问题的本质是要将 i 转换成局部变量。
 */
// for(var i = 0;i<lis.length;i++){
//  lis[i].onclick = function(){
//  console.log(i);
//  }

// }

得到结果如图:

/*
解决方法一:将i的值赋值给它本身的一个变量
 */
// for(var i = 0;i<lis.length;i++){
//  lis[i].index = i;
//  lis[i].onclick = function () {
//  console.log(this.index);
//  }
// }

得到结果如图:

/*
解决方法二:匿名自执行函数
 */
// 将 i 传给匿名自执行函数的局部变量j
// for(var i = 0;i<lis.length;i++){
//  (function(j){
//  lis[j].onclick = function () {
//  console.log(j);
//  }
//  })(i)
// }

得到结果如图:

/*
解决方法三:利用函数参数方法
 */
// 将lis 和 li 传给函数的参数,函数的参数实际为局部变量
// function clickEvent (li , index) {
//  li.onclick = function () {
//  console.log(index);
//  }
// }
// for(var i = 0;i<lis.length;i++){
//  clickEvent(lis[i] , i)
// }

得到结果如图:

/*
解决方法四:把var 改为 let
 */
for(let i = 0;i<lis.length;i++){
lis[i].onclick = function () {
console.log(i);
}
}

得到结果如图:

</script>
</html>

转载于:https://www.cnblogs.com/liuyuemozhu/p/7490928.html

你可能感兴趣的文章
多态与异常处理课后习题
查看>>
孕龙逻辑分析仪 ZeroPlus Logic Analyzer
查看>>
NativeXml: A native Delphi XML parser and writer
查看>>
Win7 开启显示快速启动工具栏,发送到快速启动右键菜单
查看>>
回忆我是如何赢得一次踢毽子比赛
查看>>
Java性能总结四(转)
查看>>
net 程序员面试宝典
查看>>
2019年机器学习:追踪人工智能发展之路
查看>>
2.Android新版开发教程&笔记—Activity间的数据传递
查看>>
经典的电工电路图(转载的)
查看>>
Nginx详解三:Nginx基础篇之yum安装
查看>>
DataGuard 单实例到RAC搭建
查看>>
ASP.NET Zero--4.不使用谷歌字体,提升加载速度
查看>>
【心路历程】(NOIP 203)&(HNOI 355)
查看>>
css自问自答(一)
查看>>
c#mvc似乎有个坑,关于第一次请求服务器记录session失效
查看>>
3.通过js代码设置css样式
查看>>
Prism4文档翻译(第一章 第五部分) 转载bluesky234
查看>>
ZH奶酪:C语言中malloc()和free()函数解析
查看>>
hdu 1176(矩阵dp)
查看>>