<script type="text/javascript">
var rover = function (i) {
return function () {
arr[i].getElementsByTagName("div")[i].style.left = 100;
arr[i].getElementsByTagName("div")[i].style.top = 20;
arr[i].getElementsByTagName("div")[i].style.display = "block";
};
};
var rout = function (i) {
return function () {
arr[i].getElementsByTagName("div")[i].style.display = "none";
};
};arr[i].onmouseover = rover(i);
arr[i].onmouseout = rout(i);
</script>
var rover = function (i) {
return function () {
arr[i].getElementsByTagName("div")[i].style.left = 100;
arr[i].getElementsByTagName("div")[i].style.top = 20;
arr[i].getElementsByTagName("div")[i].style.display = "block";
};
};
var rout = function (i) {
return function () {
arr[i].getElementsByTagName("div")[i].style.display = "none";
};
};arr[i].onmouseover = rover(i);
arr[i].onmouseout = rout(i);
</script>
不是要用getElementsByTagName("div")[i],二十只要用getElementsByTagName("div")[0],即第一个元素就可以了var i = 0;
arr[i].onmouseover = function() {
arr[i].getElementsByTagName("div")[0].style.left = 100;
arr[i].getElementsByTagName("div")[0].style.top = 20;
arr[i].getElementsByTagName("div")[0].style.display = "block";
}
arr[i].onmouseout = function() {
arr[i].getElementsByTagName("div")[0].style.display = "none";
}
有效果,下面放到循环里面就没有效果了
for(var i=0; i<arr.length; i++) {
arr[i].onmouseover = function() {
arr[i].getElementsByTagName("div")[0].style.left = 100;
arr[i].getElementsByTagName("div")[0].style.top = 20;
arr[i].getElementsByTagName("div")[0].style.display = "block";
}
arr[i].onmouseout = function() {
arr[i].getElementsByTagName("div")[0].style.display = "none";
}
}
只是纠正以下我自己发帖时候的错误啊,没有说不搭理你啊……我只是想明白,为什么手工指定i的值的时候就有效,用循环指定i的值的时候,就无效……你的方法我在试,不管试出来效果对不对,我这个问题到底是什么原因引起的呢?
for(var i=0; i<arr.length; i++) {
arr[i].onmouseover = function() {
arr[i].getElementsByTagName("div")[0].style.left = 100;
arr[i].getElementsByTagName("div")[0].style.top = 20;
arr[i].getElementsByTagName("div")[0].style.display = "block";
}
arr[i].onmouseout = function() {
arr[i].getElementsByTagName("div")[0].style.display = "none";
}
}
这个for的i
循环到最后一次的时候i 就 == arr.length
所以..你的那些FUNC找i就会出错..
我那样写..是用一个func保了i...
//这里面的arr[i]应全部换成this
}
arr[i].onmouseout = function() {
//同上
}
您的方法有用,只要根据我的实际情况稍微调整下位置就可以了,但是我还是不明白其中的原理……能告诉我么?是在是非常感谢……
您的方法也可以,这个里面到底是什么一个原因呢?
加了你QQ了,加我,谢谢
return 函数后.
那些每次执行那些func都没有释放资源...
并且..返回的func中..的i引用了..执行时的func里的形式参数i
这样每执行一次就会发生一次新的引用...
所以说就不会发生引用外部的那个i...
有机会上了加你..^o^
js这一类的脚本语言变量的作用域经常让初学者犯晕,
所以,建议在写稍复杂的js代码的时候,循环的指针不要用i,n,m等过于简单的字母。
避免当函数之间互相调用时,两个函数中因同时存在以i,n,m等命名的指针变量的循环而出现错误。
xuStanly(黑金)
真的非常感谢你们了,
拜你们为师了,黑金大哥,也能给个QQ什么的么?谢谢了
//这里放上面那段去掉第一行var i = 0;的全部代码
}
把这个放在上边
arr还没有值呢
所以arr.length过不去。