经典js问题
来源:互联网 发布:直播音效软件下载 编辑:程序博客网 时间:2024/06/08 17:56
经典js问题
var list = document.getElementsByTagName("li"); function foo(){ for(var i = 0, len = list.length; i < len; i++){ list[i].onclick = function(){ alert(i + "----" + this.innerHTML); } } } foo();
我们会发现运行结果是弹出 list.length,这是因为没有块级作用域造成的,解决办法由几个:
1.使用闭包
var list = document.getElementsByTagName("li"); function foo(){ for(var i = 0, len = list.length; i < len; i++){ var that = list[i]; list[i].onclick = (function(k){ var info = that.innerHTML; return function(){ alert(k + "----" + info); }; })(i); } } foo();
2.使用闭包
var list = document.getElementsByTagName(“li”);
function foo(){‘use strict’
for(let i = 0, len = list.length; i < len; i++){
list[i].onclick = function(){
alert(i + “—-” + this.innerHTML);
}
}
}
foo();
3.事件委托
var myul = document.querySelector('ul'); var list = document.querySelectorAll('ul li'); myul.addEventListener('click', function(ev){ var ev = ev || window.event; var target = ev.target || ev.srcElemnt; for(var i = 0, len = list.length; i < len; i++){ if(list[i] == target){ alert(i + "----" + target.innerHTML); } } });
4.使用jquery的delegate和on进行事件绑定
<script type="text/javascript"> $("ul").delegate("li", "click", function(){ var index = $(this).index(); var info = $(this).html(); alert(index + "----" + info); }); </script> <script type="text/javascript"> $("ul").on("click", "li", function(){ var index = $(this).index(); var info = $(this).html(); alert(index + "----" + info); }); </script>
0 0
- js经典问题
- 经典js问题
- js经典闭包问题
- js经典闭包问题
- 几个经典递归问题用js实现
- JS高级程序设计经典代码与问题
- 经典js
- js 经典
- 经典js
- 经典js
- 经典JS
- JS中最经典的全局变量和局部变量问题
- JS中最经典的全局变量和局部变量问题
- JS中最经典的全局变量和局部变量问题
- JS中最经典的全局变量和局部变量问题
- 经典问题
- 经典问题
- 经典问题
- Android UI--自定义ListView(实现下拉刷新+加载更多)
- SPI通信
- Beginner
- 系统警告说REDO LOG Writer经常时间长 经常200多ms
- nw-git配合beyond的使用
- 经典js问题
- Exception in thread "main" org.apache.hadoop.mapred.InvalidJobConfException: Output directory not se
- 安卓自定义控件收集整理
- 字符串计数-求复合条件字典序个数
- 后台验证码
- 小米考试(电话号码)
- c
- UE4 Texture Streaming Pool 运行时红色显示关闭
- Leetcode 312. Burst Balloons[hard]