<body>
<input name="tt_Span" type="button" value="1" /><br />
<input name="tt_Span" type="button" value="2" /><br />
<input name="tt_Span" type="button" value="3" /><br />
<input name="tt_Span" type="button" value="4" /><br /><SCRIPT LANGUAGE="JavaScript">
var col = document.getElementsByName( "tt_Span" );
for( var i = 0 ; i < col.length ; i++ )
{
col[i].attachEvent("onmouseover", new Function("ff('"+ i +"', 'black', '#eeeeee')"));
}function ff(i, a, b)
{
    alert(col[i].value);
}
</SCRIPT>

解决方案 »

  1.   

    楼上的强,能说一下有什么区别嘛?
    col[i].attachEvent("onmouseover", new Function("ff('"+ i +"', 'black', '#eeeeee')"));

    col[i].attachEvent( "onmouseover", function () { ff(i, 'black', '#eeeeee'); } );
      

  2.   

    直接寫 function(){} 的話,由於裡面的 i 指向的是循環過程中的變量 i ,即當循環結束之後,所有的函數得到的都是 i 的最後的值,而使用 new Function的時候,由於有一步 function 的產生過程,在這個產生過程中,這個i 變量被固化了。