javascript的闭包介绍(司徒正美)(2)


var ul = document.getElementsByTagName("ul")[0];
ul.onclick = function(){
var e = arguments[0] || window.event,
target = e.srcElement ? e.srcElement : e.target;
if(target.nodeName.toLowerCase() == "li"){
alert(target.id.slice(-1))
}
}



[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]


将暂时变量保留于元素节点上。

复制代码 代码如下:


var lists = document.getElementsByTagName("li");
for(var i=0,t=0,el; el = list[i++];){
el.i = t++
el.onclick = function(){
alert(this.i)
}
}



[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]


使用with语句造成的对象闭包。

复制代码 代码如下:


var els = document.getElementsByTagName("li")
for(var i=0,n=els.length;i<n;i++){
with ({i:i})
els[i].onclick = function() { alert(this.innerHTML+i) };
}



[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]


使用try...catch语句构造的异常闭包:

复制代码 代码如下:


var lists = document.getElementsByTagName("li");
for(var i=0,l=lists.length; i < l; i++){
try{
throw i;
}catch(i){
lists[i].onclick = function(){
alert(i)
}
}
}



[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]


复制代码 代码如下:


var els = document.getElementsByTagName("li");
(''+Array(els.length+1)).replace(/./g,function(a,i){
els[i].onclick=function(){alert(i)}
})

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdjsjx.html