慕圣9424722
2017-08-25 19:53
如下代码中, 把 li[i].index=i写在onmouseover的函数里(不是for循环中),代码就没有效果了,这是为什么呢?
<script type="text/javascript">
window.onload=function(){
var p=document.getElementsByTagName("p");
var li=document.getElementsByTagName("li");
for(var i=0; i<li.length;i++){
li[i].index=i;
li[i].onmouseover=function(){
for(var i=0; i<li.length;i++){
li[i].className="";
p[i].className="hide";
}
this.className="active";
p[this.index].className="show";
}
}
}
</script>
这里面li[i].onmouseover=function()相当于
<li onmouseover="a"> <!--第i+1个li-->
function a(){}
把 li[i].index=i;写到里面,其实并没有i的值,所以下面li[i]都是用this,代表li[i]该对象,可以这样尝试一下,分别把
this.index=0 this.index=1 this.index=2,放到onmouseover的函数里,就会只显示序号对应的图像
可能是作用域的关系 li[i].index=i写在函数里 作用范围就只在函数内部 外部无法调用
别的问题不知道,首先你的for循环都是循环i就不对
这应该是函数的执行环境的问题,如果写在onmouseover的函数里,当函数执行完,执行环境被销毁,li[i].index=i也会被销毁,所以就没有了,应该是,我也不是特别清楚。
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题