function tab(){
var tabArr = $('tab').getElementsByTagName('a');
var contArr = getElementsByClassName('hotestCont');
for (var i = 0; i < tabArr.length; i++) {
(function(){
var j = i;
tabArr[i].onmouseover = function(){
this.className = 'here';
contArr[j].style.display = "block";
};
tabArr[i].onmouseout = function(){
this.className = '';
contArr[j].style.display = "none";
};
contArr[i].onmouseover = function(){
tabArr[j].className = 'here';
this.style.display = "block";
};
contArr[j].onmouseout = function(){
tabArr[j].className = '';
this.style.display = "none";
}
})();
}
}为什么for循环中(...)()这样写?
这样写有什么好处?
这种写法叫什么东东?
解决方案 »
- 关于farmeset 的问题
- 拖动表列改变table的列宽度(JavaScript脚本实现) 这个功能我已实验,如何保存到cookie.
- WEB窗口焦点问题
- 创建元素时的问题
- 一个非常棘手的正折表达式问题(急啊!!!!!!!)
- 如何实现点击单选按钮,隐藏下拉框?
- 關於showModalDialog打開的窗體的問題?
- 求救!!急!!请问我在dreamweavor里调试javascript为什么不行啊???在线等!!
- 怎么样用javascript发信件,但不要启动outlook或其它软件,急
- 一个PHP排序的问题,非常恼人,基本很少人能想出来,如能给出php算法,给足100分,先谢了
- |zyciis| 如何动态添加a 标签并给他加属性,谢谢
- JavaScript日期,今天9.29,它显示8.2
也就是 当onmouseover处理函数执行的时候i不存在了.
通过(function(){})()的 方式,让匿名函数function(){}先执行一次,在这个过程中i还是有效的,
可以借助参数或变量将i的值 保留在onmouseover处理函数定义中,
这样onmouseover处理函数执行的时候 就相当于存在contArr[i]了.
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
<script>
function tab(){
var tabArr = document.getElementsByTagName('a');
var arr = [1,2,3];
for (var i = 0; i < tabArr.length; i++) {
//(function(){
var j = i;
tabArr[i].onmouseover = function(){
alert(arr[j]);
};
//})();
}
}
</script>
</head><body onload="tab()">
去掉注释,加上注释,有什么不同?
<a href="">a1</a>
<a href="">a2</a>
<a href="">a3</a>
</body></html>