日期:2014-05-16  浏览次数:20326 次

想用setTimeout延时,但是怎么弄也不成功
直接上代码
function action(event){
var thisId = event.currentTarget.id;
var littleBoxs = document.getElementById("box").childNodes;

while(parseInt(getWidth(thisId)) < 350){
for(var i = 0;i < littleBoxs.length;i++){
if(littleBoxs[i].id != null){
if(getNumber(littleBoxs[i].id) != getNumber(thisId)){
downWidth(littleBoxs[i].id);
}
}
}
addWidth(thisId);
doNothing();
}

}

function doNothing() {
setTimeout("doNothing()",100);
}


这是主要的程序,doNothing函数用来延时,这么设置为什么不行
------解决方案--------------------
他会每100毫秒执行一次doNothing,而且貌似是个无限执行的样子,这期间并不会阻碍其他代码的执行
------解决方案--------------------
哈哈,我也估计你是想用sleep延时吧,setTimeout是异步延时调用,运行下下例你会有启发

<!doctype html>
<html>            
<body>
<script type="text/javascript"> 
temp() 
function temp() 

var hr=document.createElement("hr");
document.getElementsByTagName("body")[0].appendChild(hr);
//do sth here
setTimeout("temp()",1000);

</script> 
</body>
</html>


------解决方案--------------------
你这代码是想实现什么啊?从你上面的代码,我猜测你是想让下面这段代码每间隔100ms循环一次
while(parseInt(getWidth(thisId)) < 350){    for(var i = 0;i < littleBoxs.length;i++){        if(littleBoxs[i].id != null){        if(getNumber(littleBoxs[i].id) != getNumber(thisId)){            downWidth(littleBoxs[i].id);        }        }    }    addWidth(thisId);    doNothing();    }



------解决方案--------------------
这样看行不行,因为不知道 downWidth(); addWidth()函数里面写的什么。所以暂时这样试试。应该是这个思路。

function action(event){
var thisId = event.currentTarget.id;
var littleBoxs = document.getElementById("box").childNodes;
doNothing(thisId,littleBoxs);


function doNothing(thisId,littleBoxs) {   
if(parseInt(getWidth(thisId)) < 350){
for(var i = 0;i < littleBoxs.length;i++){
if(littleBoxs[i].id != null){
if(getNumber(littleBoxs[i].id) != getNumber(thisId)){
downWidth(littleBoxs[i].id); 
}     

}  
addWidth(thisId); 
setTimeout(function(thisId,littleBoxs){doNothing(thisId,littleBoxs)},100);    
}    

}

------解决方案--------------------
我看了下。楼主大概是想延时实现那种效果。下面这种方法可以帮你实现
javascript模拟sleep