直接上代码
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