<input type="text" id="t1"/>
<input type="text" id="t2"/><script>
t = new Array("t1","t2");
for(var i = 0;i < t.length;i++){
var obj = document.getElementById(t[i]);
alert(obj);
obj.onblur = function(){
alert(i);
}
}
</script>
我想分别给t1、t2两个文本加上onblur事件,目标是显示数组t中文本域ID的下标。就是t1在onblur中显示alert(0),t2显示alert(1)。但是由于当前传进的是变量i,所以在运行时会把alert(i)加入到onblur事件中,触发事件后寻找i变量,而且遍历时的下标了,如何才能取到i在遍历时,0,1这些数值呢?

解决方案 »

  1.   

    <script>
    t = new Array("t1","t2");
    for(var i = 1;i <= t.length;i++){
    var obj = document.getElementById(t[i]);if   (typeOf(obj )   !=   "undefined")
    {
        obj.onblur = function()
        {
        alert(i);
        }}}
    </script>
      

  2.   

    if   (typeOf(x)   !=   "object")
      

  3.   

    先谢谢各位了,可能我叙述有些不清楚,从程序上看,i曾经取值为0、1、2,我加载事件的时候是加载alert(i),而且我本意是把alert(0)、alert(1)赋予t1、t2对象的onblur事件,现在却是变量i,我想要遍历i时i的当前值,不知道这么说能清楚些了么?
      

  4.   

    遍历后应该要这样效果的代码
    <input type="text" id="t1" onblur="alert(0)"/>
    <input type="text" id="t2" onblur="alert(1)"/>
    现在失败的效果是
    <input type="text" id="t1" onblur="alert(i)"/>
    <input type="text" id="t2" onblur="alert(i)"/>
      

  5.   

    我想做的动态添加验证信息的js,这个是现在瓶颈问题的简写demo,能解决这个就可以了。本身写的那个有点多,而且已经验证没有问题了,就没上传
      

  6.   

    <input type="text" id="t1"/>
    <input type="text" id="t2"/><script>
    t = new Array("t1","t2");
    for(var i = 0;i < t.length;i++){
    var obj = document.getElementById(t[i]);
    obj.on("onblur",function(){
    alert(i);
    }
    }
    </script>
      

  7.   

    你这种写法逻辑上就是有问题的,事件不是你那样调用的,LZ看看这样可不可以
    <html>
    <head>
        <title>免发短信保单号管理</title>
    </head><body>
    <input type="text" id="t1" onfocus="test(this)"/>
    <input type="text" id="t2" onfocus="test(this)"/>
    </body>
      <script>
       var test = function(e)
       {
       t = new Array("t1","t2");
    for(var i = 0;i < t.length;i++){
    var obj = document.getElementById(t[i]);
    if(e == obj)
    {
    alert(i);
    }
    }
       }
    </script>
    </html>