怎么让JS延迟10S执行? setTimeout(function(){alert("Hello world");},10000); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 javascript is case-sensitive language 2楼正解setTimeout('function(){......}',10000); setInterval不行哦 用setTimeout只执行一次吧 哦 也许我理解错了 我理解楼主的要求是让for循环每隔10秒走一步 s_liangchao1s说得对,JS无办法在for循环里延迟一个时间再执行下一次的循环,不行的。只能变通,不用for来循环,采取setTimeout或setInterval去执行i次函数或语句,把i作为全局变量或传递参数进行每次+1,以前有人试过想做出一个完美的类似vbs的sleep,但结果总是不如愿的,别想了。 难道不对吗?LZ说的是“怎么让JS延迟10S执行?”又不是要循环。 等效法:(将i设置成全局变量,并setInterval实现函数功能,并给i加1)for(i=1;i <10;i++){ alert(i); delay(10);//延迟10s再执行下一步} 等效于<script>var i=1;var timeID=null;function display(){ timeID = window.setInterval("delay()", 1000);}function delay(){ if(i<10) { alert(i); i++; } else { window.clearInterval(timeID); }}display();</script> 循环执行,假设循环5秒,可以这样<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>My JSP '002.jsp' starting page</title> <script type="text/JavaScript"> var stingTime; var timeLeft = 1 ; function countTime() { document.getElementById("hehe").disabled=true; while(timeLeft%5 == 0) { alert("你好!"); break; } document.getElementById("timeDiv").innerHTML = "timeLeft = " + timeLeft + "秒"; timeLeft = timeLeft - 1; setTimeout('countTime()',1000); } </script> </head> <body> <input type='button' value='开始' onclick='countTime();' id='hehe'><div id='timeDiv' ></div> </body> </html> for里面延迟...会假死的...<SCRIPT LANGUAGE="JavaScript">for(var i=1;i <5;i++){ alert(i); delay((new Date()).getTime(),3);}function delay(ms,n){ while(((new Date()).getTime()-n*1000)<=ms) { }}</SCRIPT> 如果用setTimeout setInterval 我就不用来问你们了。别把我的问题看的那么简单。我就是要在for循环里实现。另外,有一100行的代码里,我在50行和52行之间的51行,要实现延时10S,10S之后再执行第52行的代码。这100行代码没有一个function。全部是顺序执行的。附:别问我为什么100行代码没有一个函数。只要你在现实开发中,你就有可能遇到很棘手的现实的问题。事实如此。怎么样? 个人认为 单纯从for循环的角度来看 是无法实现的 21楼的就是一种变能方法,而且只能这样,23楼的就说了,强制搞一些东西去进行延迟会让IE假死,不现实,所以楼主想要构造一个能在for里延迟的函数是不可能实现的,明知不可为的事就不要想了。 我找寻JavaScript的sleep函数已经几年了,没有 这个问题也困绕了好久今日再搜索也未果不过突然想出另外种实现方法,不知是不是楼主要的我原先的代码function reloadAll(){ if(confirm("确认要刷新所有行数据吗?") == true){ var tableObj = document.getElementById("matchList"); for(var i=1; i<tableObj.rows.length; i++){ var imgs = tableObj.rows[i].getElementsByTagName("img"); if(imgs.length > 0){ imgs[0].click(); } } } }逻辑就是点击表格中的一个图片在碰到有几百行的时候,IE会假死,这令我很不爽于是想能否延时的执行各行中的click()方法,也就是在for循环中使用延时,但搜索后未果-_-b现在想出另外种方式,实验下来效果也不错,代码如下function reloadAll(){ if(confirm("确认要刷新所有行数据吗?") == true){ var tableObj = document.getElementById("matchList"); setTimeout('imgClick(1, '+tableObj.rows.length+')',1000); } } function imgClick(rowIndex, rowsLength){ var tableObj = document.getElementById("matchList"); var imgs = tableObj.rows[rowIndex].getElementsByTagName("img"); if(imgs.length > 0){ imgs[0].click(); } rowIndex = rowIndex + 1; if(rowIndex < rowsLength){ setTimeout('imgClick('+rowIndex+', '+rowsLength+')',1000); } }把FOR循环中的条件判断作为参数,调用另外一个方法,方法中判断条件是否成立,如果成立,则循环调用本身,这样imgClick只有在上一个被调用后1000毫秒后执行下一个imgClick,这样就变成了延时间,而且如果各个延时不同,也可以在IF中判断如过用第1种方式直接在FOR循环中使用延迟调用imgClick(),则是1000毫秒后,全部都执行了......希望这个对楼主有用,不过看帖子时间,似乎过了很久很久了......... 搜到这个帖子,MS可以把循环弄成递归, 然后var i = 0;function a(i){setInterval("a(i++)",1000);} 梅花雪树, 左边显示树结构右边显示内容 js+zip+rar+c# 兼容问题 文本框能否填写的问题 js不能排序吗?为什么10 < 9. 样式套用问题,急!!! 关于预缓存图象问题 怎么样自动选择 问个jQuery的属性选择器的问题。。。。。在线等 求助!怎么用js修改被选择的checkbox的样式 怎么用UrlReferrer 获取 (来源页) - 的上一页?Javascript! Javascript中的$是什么意思?
不行哦
用
setTimeout
只执行一次吧
for(i=1;i <10;i++)
{
alert(i);
delay(10);//延迟10s再执行下一步
}
等效于
<script>
var i=1;
var timeID=null;
function display()
{
timeID = window.setInterval("delay()", 1000);
}
function delay()
{
if(i<10)
{
alert(i);
i++;
}
else
{
window.clearInterval(timeID);
}
}
display();
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '002.jsp' starting page</title>
<script type="text/JavaScript"> var stingTime;
var timeLeft = 1 ;
function countTime()
{
document.getElementById("hehe").disabled=true; while(timeLeft%5 == 0)
{
alert("你好!");
break;
}
document.getElementById("timeDiv").innerHTML = "timeLeft = " + timeLeft + "秒";
timeLeft = timeLeft - 1;
setTimeout('countTime()',1000);
} </script> </head>
<body>
<input type='button' value='开始' onclick='countTime();' id='hehe'>
<div id='timeDiv' ></div>
</body> </html>
for(var i=1;i <5;i++)
{
alert(i);
delay((new Date()).getTime(),3);
}
function delay(ms,n)
{
while(((new Date()).getTime()-n*1000)<=ms)
{
}
}
</SCRIPT>
别把我的问题看的那么简单。
我就是要在for循环里实现。另外,
有一100行的代码里,
我在50行和52行之间的51行,要实现延时10S,10S之后再执行第52行的代码。
这100行代码没有一个function。全部是顺序执行的。
附:
别问我为什么100行代码没有一个函数。只要你在现实开发中,你就有可能遇到很棘手的现实的问题。
事实如此。
怎么样?
今日再搜索也未果
不过突然想出另外种实现方法,不知是不是楼主要的
我原先的代码
function reloadAll(){
if(confirm("确认要刷新所有行数据吗?") == true){
var tableObj = document.getElementById("matchList");
for(var i=1; i<tableObj.rows.length; i++){
var imgs = tableObj.rows[i].getElementsByTagName("img");
if(imgs.length > 0){
imgs[0].click();
}
}
}
}
逻辑就是点击表格中的一个图片
在碰到有几百行的时候,IE会假死,这令我很不爽
于是想能否延时的执行各行中的click()方法,也就是在for循环中使用延时,但搜索后未果-_-b
现在想出另外种方式,实验下来效果也不错,代码如下
function reloadAll(){
if(confirm("确认要刷新所有行数据吗?") == true){
var tableObj = document.getElementById("matchList");
setTimeout('imgClick(1, '+tableObj.rows.length+')',1000);
}
}
function imgClick(rowIndex, rowsLength){
var tableObj = document.getElementById("matchList");
var imgs = tableObj.rows[rowIndex].getElementsByTagName("img");
if(imgs.length > 0){
imgs[0].click();
}
rowIndex = rowIndex + 1;
if(rowIndex < rowsLength){
setTimeout('imgClick('+rowIndex+', '+rowsLength+')',1000);
}
}
把FOR循环中的条件判断作为参数,调用另外一个方法,方法中判断条件是否成立,如果成立,则循环调用本身,这样imgClick只有在上一个被调用后1000毫秒后执行下一个imgClick,这样就变成了延时间,而且如果各个延时不同,也可以在IF中判断如过用第1种方式直接在FOR循环中使用延迟调用imgClick(),则是1000毫秒后,全部都执行了......希望这个对楼主有用,不过看帖子时间,似乎过了很久很久了.........
var i = 0;
function a(i){
setInterval("a(i++)",1000);
}