function trackLinks(){
var Links = document.getElementsByTagName( 'A' );
for( var i = 0; i < Links.length; i++ )
   {
if (window.attachEvent)
{
                 //支持 IE
                  Links[i].attachEvent("onclick", function () { trackClick(i) });
}
else
{
                  //支持 FF
                  Links[i].addEventListener("click", function () { trackClick(i)}, false);

}
}
}function trackClick(i){
alert(i);

}
请教一下为什么function trackClick(i){
alert(i);

}方法里alert的永远是最后一个i?
PS:今天CSDN是不是有问题了?早上发了一个类似的问题,看到有人回答,可是怎么也点不进去,报页面出现错误,郁闷,其他功能正常

解决方案 »

  1.   

    这样试下.
    function trackLinks(){
        var Links = document.getElementsByTagName( 'A' );
        for( var i = 0; i < Links.length; i++ )
       {
            (function(i){if (window.attachEvent)
            {
                     //支持 IE
                      Links[i].attachEvent("onclick", function () { trackClick(i) });
            }
            else
            {
                      //支持 FF
                      Links[i].addEventListener("click", function () { trackClick(i)}, false);
        
            }})(i);
        }    
            }function trackClick(i){
        alert(i);
        
    }
      

  2.   

    修改一下试试:  <script language="JavaScript">
    function trackLinks(){
        var links = document.getElementsByTagName( 'A' );
        for( var i = 0; i < links.length; i++ ) {
            links[i].val = i;
            if (window.attachEvent)
            {
                     //支持 IE
                      links[i].attachEvent("onclick", function () { trackClick(window.event.srcElement.val) });
            }
            else
            {
                      //支持 FF
                      links[i].addEventListener("click", function (event) { trackClick(event.target.val)}, false);
        
            }
        }    
            }function trackClick(i){
        alert(i);    
    }trackLinks();
      </script>