attachEvent传递参数

JavaScript中有时会用到给Html动态添加事件,在传递参数中需要注意下.
下例中注释掉的部分运行会出问题,有人说这属于JavaScript闭包的问题
至于何为闭包,管它的了.

<html>
<head>
    <title>无标题页</title>
</head>
<body>
    <input id="Text1" type="text" />
    <input id="Text2" type="text" />
</body>
<script>
    var f = function(k)
    {  
        return function()
        {  
            alert(k);  
        }  
    }
//  var f2 = function(k2)
//  {
//      alert(k2);
//  }
    var ctls = document.getElementsByTagName("input");
    for(var i=0;i<ctls.length;i++)
    {
        if (ctls[i].type=="text")
        {
            ctls[i].attachEvent("onclick",f(i));
            //ctls[i].attachEvent("onclick",f2(i));
        }
    }
</script>
</html>

你可能感兴趣的:(attachEvent)