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"); } }
那个循环早就执行完了
那个时候的i根本不是你所需要的i了
到于this,那是代表li元素的本身,自然是可以的
javascript的规则是 某个方法在某个对象上调用,那方面内的this关健字将引用那个调用的对象
不过可以用call来改变
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");
}
}