<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body>
<div>
<ul id="nav">
<li>
<a href="#">a1</a>
</li><li>
<a href="#">a2</a>
</li>
</ul>
</div>
</body>
</html>
<script type="text/javascript">var arr = document.getElementById("nav").getElementsByTagName("a");
for(i =0 ;i <arr.length;i++)
{
arr[i].onclick =function aa(){alert("xxxxxxxxx");};
}
</script>

解决方案 »

  1.   

    arr[i].onclick =aa();
    这句是执行aa()函数,将其返回值赋给onclick事件,当然会出错了
      

  2.   

    arr[i].onclick =aa(); ---> arr[i].onclick = aa;
      

  3.   

    arr[i].onclick =function () { alert("");  }
      

  4.   

    确实把()去掉就可以了,但是本意要执行的函数是由参数的怎么办?如下:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <div>
    <ul id="nav">
    <li>
    <a href="#">a1</a>
    </li><li>
    <a href="#">a2</a>
    </li>
    </ul>
    </div>
    </body>
    </html>
    <script type="text/javascript">var arr = document.getElementById("nav").getElementsByTagName("a");
    for(i =0 ;i <arr.length;i++)
    {
    arr[i].onclick =aa(i);
    }
    function aa(i)
    {
    alert(i);
    }</script>
      

  5.   

    那就用arr[i].onclick = function(i){alert(i);}
      

  6.   

    arr[i].onclick = function(i){alert(i);}
    是错误的,后面的function(i){alert(i);}会覆盖前面的,即function(1){alert(1);}会覆盖function(0){alert(0);}
    lz不妨这样:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <div>
    <ul id="nav">
    <li>
    <a href="#" value=1>a1</a>
    </li><li>
    <a href="#" value=2>a2</a>
    </li>
    </ul>
    </div>
    </body>
    </html>
    <script type="text/javascript">var arr = document.getElementById("nav").getElementsByTagName("a");
    for(i =0 ;i <arr.length;i++)
    {
    arr[i].onclick =function() {alert(this.value);};

    </script>
      

  7.   

    有多个参数就不好办了啊,除了一个value,其他的总不能都设置成全局的吧
      

  8.   

    再改动下:
    <html>
    <head>
    <title>无标题文档</title>
    </head>
    <body>
    <div>
    <ul id="nav">
    <li><a href="#">a1</a></li>
    <li><a href="#">a2</a></li>
    </ul>
    </div>
    </body>
    </html>
    <script type="text/javascript">
    var arr = document.getElementById("nav").getElementsByTagName("a");
    for(i =0 ;i <arr.length;i++)
    {
    arr[i].value=i;
    arr[i].onclick =function() {alert(this.value);};

    </script>
      

  9.   

    2个或2个以上参数可以通过数组赋值给value,如下:<html>
    <head>
    <title>无标题文档</title>
    </head>
    <body>
    <div>
    <ul id="nav">
    <li><a href="#">a1</a></li>
    <li><a href="#">a2</a></li>
    </ul>
    </div>
    </body>
    </html>
    <script type="text/javascript">
    var arr = document.getElementById("nav").getElementsByTagName("a");
    for(i =0 ;i <arr.length;i++)
    {
    arr[i].value=new Array(i,i);
    arr[i].onclick =function() {for(var j=0;j<this.value.length;j++){alert(this.value[j]);}};

    </script>
      

  10.   

    for(var i =0,j=0;i <arr.length;i++)
    {
      arr[i].onclick = function(){aa(j++)};
    }
      

  11.   

    给arr[i].onclick 添加事件处理函数,貌似直接跟aa(obj1,obj2)不行.原理不清楚..而通过arr[i].onclick = function() { aa(obj1,obj2)};却可以..