这节说说编程中出现的一些bug,看下面这个例子:
<ul>
<li1</li>
<li2</li>
<li3</li>
<li4</li>
</ul>
<scriptvar lis = document.getElementsByTagName("li");
var i=0;
for(;i<lis.length;i++){
lis[i].onclick=function(){
你可以试一下运行结果,不管点击那个都是4,这是为什么,我想了一下不知道说的对不对,每次alert的这个i不是里面每次i++的那个i,是他i运行完之后,i作为全局变量访问的i,所以他每次运行的结果都是i,要想获得预期的效果,可以这样写,使用闭包:
window.onload=function ()
var lis = document.getElementsByTagName("li");
var i=0;
for(i=0;i<lis.length;i++){
lis[i].onclick=(function(i){
return function(){
这样写的话,你可以试一下运行结果就是你想要的结果了。
也可以使用事件代理,这样的也是正确的。
in可以判断某个实例是否含有某个属性,不管是不是本地属性。