本帖最后由 bobiy45785 于 2011-06-26 00:21:10 编辑

解决方案 »

  1.   

    推荐精华帖:http://topic.csdn.net/u/20090217/13/653f7949-9e0c-4e99-adb3-dcbc99fca8d5.html
      

  2.   

    nav[i].onclick 也就是你每个li元素点击的时候
    那个循环早就执行完了
    那个时候的i根本不是你所需要的i了
    到于this,那是代表li元素的本身,自然是可以的
    javascript的规则是 某个方法在某个对象上调用,那方面内的this关健字将引用那个调用的对象
    不过可以用call来改变
      

  3.   


    var navs=document.getElementById("nav").getElementsByTagName("li");
    for(i=0;i<navs.length;i++){
        //由于onclick事件是在点击时才发生,此时对于它来说,这i的值已经无从算起了
    //所以改成这样也是可以的
    var li = navs[i];
        li.onclick=function(){
            li.getElementsByTagName("a");  
            //this指向引发事件的自身,也就是li,当然没问题
            this.getElementsByTagName("a"); 
        }
    }