js的settimeout函数问题,浏览器在执行的时候忽略了延时,目地是http://www.zendstudio.net/顶部的切换效

<styletype="text/css">#main{position:absolute;width:1000px;left:10%;height:500px;over... <style type="text/css">
#main{position:absolute;width:1000px;left:10%;height:500px;overflow:hidden;}
#left{position:absolute;float:left;width:800px;height:500px;}
#right{float:right;width:20%px;height:500px;}
#test-first{position:absolute;top:0px;background:url(images/01.jpg);height:500px;}
#test-second{position:absolute;top:500px;background:url(images/02.jpg);height:500px;}
#test-third{position:absolute;top:1000px;background:url(images/03.jpg);height:500px;}
ul{list-style-type:none;}
li{text-align:center;}
</style>
<script type="text/javascript">
function test(){
var a=document.getElementsByTagName("li");
for(i=0;i<a.length;i++){
a[i].onmouseover=function(i){
return function(){
var b=document.getElementById("left").getElementsByTagName("div");
var c=b[i].style;
var distance=getCssValue(b[i]);
var constDis=distance;
//var temp=0;
while(distance!=0){
setTimeout("hello",200);
change(b,distance,constDis);
distance=getCssValue(b[i]);
//temp++;//防死循环
//if(temp>5)break;
}
}
}(i);
}
}
function change(arr,currDis,cDis){
if(currDis>0)cDis=5;
else cDis=-5;
for(var j=0;j<arr.length;j++){
var tDis=getCssValue(arr[j]);
tDis=tDis-cDis;
arr[j].style.top=tDis+"px";
}
}
function getCssValue(obj){//获取css top属性值
return obj.currentStyle?parseInt(obj.currentStyle.top):parseInt(document.defaultView.getComputedStyle(obj,false).top);
}
function hello(){//for test
//alert("hello world");
}
</script>

</head>

<body onload="test()">
<div id="main">
<div id="left">
<div id="test-first">
<?php echo "it's the first div" ?>
</div>
<div id="test-second">
<?php echo "it's the second div" ?>
</div>
<div id="test-third">
<?php echo "it's the third div" ?>
</div>
</div>
<div id="right">
<ul>
<li><a href='#' name="list">first</a></li>
<li><a href='#' name="list">second</a></li>
<li><a href='#' name="list">third</a></li>
</ul>
</div>
</div>

</body>
展开
 我来答
依土天羽
2011-05-05 · TA获得超过289个赞
知道小有建树答主
回答量:337
采纳率:100%
帮助的人:401万
展开全部
是什么问题呢?
setTimerout的第一个参数如果是字符串的话,请写成
setTimeout("hello()", 200),括号是不能少的,不然他不会执行的
第二,你的hello方法中还要再次调用setTimerout("", 200);
因为setTimerout只会运行一次,你要想多次运行,请使用setInterval方法,参数与setTimerout一样
百度网友b59be34
2011-05-05 · TA获得超过110个赞
知道答主
回答量:98
采纳率:100%
帮助的人:20.3万
展开全部
setTimeout("hello",200); 把这句话换成 setTimeout(hello,200);试试,就是把调用hello函数外面的双引号去掉看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式