js当中要是能实现这样的延时就好了,请问大家能吗? /*有一项目上需要用到这样的功能,就是在while当中实现像sleep当中的延时一样,不知道有什么办法实现没有?*/var looping = truewhile(looping){ //...............这里是处理网页元素的代码 //...............这里是延时3秒钟的代码(我现在就是想请教大家这个问题如何实现?) //...............这里是if判断代码,如果为true则looping=flase退出循环} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 setimeout函数 可以延时了楼主可以换一个方式来实现有全局变量xsetimeout里面的函数递归调用就达到while的效果了 var a = setTimeout(function (){if(...){clearTimeout(a);}},3000); function sleep(millisecond) { var endTime = +new Date + millisecond; while (+new Date < endTime) { /* 打酱油 */ }} var aaa=1;setTimeOut("a()",3000)function a(){ //....别的逻辑 if(aaa<4)setTimeOut("a()",3000);}楼主可以照这个思路想想 http://topic.csdn.net/t/20060303/22/4591744.html var looping = true,timer = 1000;//1000毫秒 = 1秒var s = setInterval(function(){ alert('执行一次'); if(!looping)clearInterval(s);},timer); 主要是浏览器执行js是单线程的,有Sleep之类的也不行 看错需求了,可以用闭包模拟下。<script>(function(window){ var i = 0,looping = true,hasSleep = false; window.loopFn = function(){ while(looping){ alert(++i); if(!hasSleep && i == 3)return setTimeout(loopFn,3000),hasSleep = true,null; if(i>5)break; } };})(window);loopFn();</script> 水平有限,发个拙例子,只为蹭点分! /** * op = { * conditions: { * fun: functionName, * param: [p1, p2, p3,...] * }, * timeOut: 3000, //seconds * } **/ function delayAction(op) { var co = op.conditions; var ca = op.callback; if(co.fun.apply(co, co.param)) { var div = document.createElement('div'); div.innerHTML = 'xxxxx'; document.getElementsByTagName('body')[0].appendChild(div); setTimeout(function() { if(co.fun.apply(co, co.param)) { delayAction(op); } }, op.timeOut); } } delayAction({ conditions: { fun: function() { return document.getElementsByTagName('body') && document.getElementsByTagName('div').length < 10? true : false; }, param: [] }, timeOut: 3000, }); var looping = truewindow.setTimeout(function(){//...............这里是处理网页元素的代码 //...............这里是延时3秒钟的代码(我现在就是想请教大家这个问题如何实现?) if(looping) window.setTimeout(arguments.callee,25);},25) 只能用setTimeout模拟了,没别的办法 button标签如何实现点击按钮在当前页面打开新的网页 如何用javascript获取另一个服务器上的内容并做处理。 求一个最新正则表达式的帮助! onchange 怎么触发不了servlet ? 寻求一个有基本功能的文本编辑控件 replace中的正则表达式如何写? 非常急,如何遍历页面内所有HIDDEN的值 新手请教!!!! 二个JQUERY功能同时使用。 多个div同个id 一句js代码 不懂 求解 js文件中的 document.write的问题,在线等
楼主可以换一个方式来实现有全局变量
xsetimeout
里面的函数递归调用
就达到while的效果了
var endTime = +new Date + millisecond;
while (+new Date < endTime) {
/* 打酱油 */
}
}
setTimeOut("a()",3000)
function a()
{
//....别的逻辑
if(aaa<4)setTimeOut("a()",3000);
}
楼主可以照这个思路想想
var s = setInterval(function(){
alert('执行一次');
if(!looping)clearInterval(s);
},timer);
可以用闭包模拟下。<script>
(function(window){
var i = 0,looping = true,hasSleep = false;
window.loopFn = function(){
while(looping){
alert(++i);
if(!hasSleep && i == 3)return setTimeout(loopFn,3000),hasSleep = true,null;
if(i>5)break;
}
};
})(window);
loopFn();
</script>
/**
* op = {
* conditions: {
* fun: functionName,
* param: [p1, p2, p3,...]
* },
* timeOut: 3000, //seconds
* }
**/
function delayAction(op) {
var co = op.conditions;
var ca = op.callback;
if(co.fun.apply(co, co.param)) {
var div = document.createElement('div');
div.innerHTML = 'xxxxx';
document.getElementsByTagName('body')[0].appendChild(div);
setTimeout(function() {
if(co.fun.apply(co, co.param)) {
delayAction(op);
}
}, op.timeOut);
}
}
delayAction({
conditions: {
fun: function() {
return document.getElementsByTagName('body') && document.getElementsByTagName('div').length < 10? true : false;
},
param: []
},
timeOut: 3000,
});
var looping = true
window.setTimeout(function(){
//...............这里是处理网页元素的代码
//...............这里是延时3秒钟的代码(我现在就是想请教大家这个问题如何实现?)
if(looping) window.setTimeout(arguments.callee,25);
},25)