如何通过按键中断一段JAVASCRIPT脚本的运行,比如中断一个循环

yangch1234 2002-11-28 09:47:34
如何通过按键中断一段JAVASCRIPT脚本的运行,比如中断一个循环,如何在循环
var key=window.event.keycode;
var i=0;
var sBuf=0;
while((i < 1000) && (key !=27))
{
i=i+1;
sBuf = sBuf + i;
}

...全文
217 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangch1234 2002-11-29
  • 打赏
  • 举报
回复
谢谢 seabell,我看在while循环体中是不能中断的了。
yangch1234 2002-11-29
  • 打赏
  • 举报
回复
谢谢 seabell,我看在while
yangch1234 2002-11-28
  • 打赏
  • 举报
回复
感谢各位回复。
我的问题是在使用按键window.event.keyCode的方法时,往往是while循环执行完了才能响应window.event.keyCode,因此keyCode在执行循环体中无法改变值,如果将key=window.event.keycode语句放在循环体中,会出现对象没找到的错误。
emu 2002-11-28
  • 打赏
  • 举报
回复
以前写的一段代码,原来帖在http://expert.csdn.net/Expert/TopicView1.asp?id=806790上的。
--------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</head>
<body>
<div id=ttText style="display:none">
程序运行中......<BR>
<span id=currentState></span>   <button onclick="CANCLE = true;">停止</button><BR>
</div>
<button onclick="run_step1()" id=button1>开始</button>
<span id=result></span>
<script>
var i=0;
var sum =0;
var CANCLE = false;
var max = 1000000; //循环的终点
var step = 9999; //步长:选择合适的步长可以在响应能力和计算速度上获得比较好的折衷。
//(步长用9999而不是10000只是为了显示的时候好看,其实都一样)
var timeStart = "";
function run_step1()
{
if (i == 0)timeStart = new Date();
ttText.style.display="";
button1.style.display="none";
setTimeout("run_step2()",1);
CANCLE = false;
}
function run_step2()
{
if (CANCLE)
{
ttText.style.display="none";
button1.style.display="";
button1.value="继续";
return;
}
if (i == null)
{
//初始化
//注意:这里不能写var,因为循环变量和结果都为全局变量。
i = 1;
sum = 0;
run_step2();
}
else if (i<=max)
{
var endValue = i+step;
if (endValue >max) endValue = max+1;
for (j=i; j<endValue ; j++)
sum += j;
i+=step;
currentState.innerText = i;
result.innerText = "临时结果:"+sum;
setTimeout("run_step2()",0);
}
else
{
run_step3();
}
}
function run_step3()
{
ttText.style.display="none";
button1.style.display="";
button1.value="重新开始";
result.innerText = "最终结果"+sum+" 用时:"+(new Date-timeStart)/1000+"秒"
sum = 0;
i = 0;
}
</script>
</body>
</html>
--------------------------------------------------------------------

配置低的机器把setTimeout的时间间隔设置大一点比较好。
seabell 2002-11-28
  • 打赏
  • 举报
回复
<script>
var key;
document.onkeydown=mykey;
function mykey()
{
key=window.event.keyCode;
}
var i=0;
var sBuf=0;

while((i < 1000) && (key !=27))
{
i=i+1;
sBuf = sBuf + i;
}
alert(i);

</script>
孟子E章 2002-11-28
  • 打赏
  • 举报
回复
break 语句
中断当前循环,或和 label 一起使用,中断相关联的语句。

break [label];

可选的 label 参数指定断点处语句的标签。

说明
通常在 switch 语句和 while、for、for...in、或 do...while 循环中使用 break 语句。 最一般的是在 switch 语句中使用 label 参数,但它可在任何语句中使用,无论是简单语句还是复合语句。

执行 break 语句会退出当前循环或语句,并开始脚本执行紧接着的语句。

示例
下面的示例说明了 break 语句的用法。

function BreakTest(breakpoint){
var i = 0;
while (i < 100)
{
if (i == breakpoint)
break;
i++;
}
return(i);
}
seabell 2002-11-28
  • 打赏
  • 举报
回复
<script>
var key;
document.onkeydown=mykey;
function mykey()
{
key=window.event.keyCode;
}
var i=0;
var sBuf=0;
function myadd()
{
if((i < 1000) && (key !=27))
{
i=i+1;
sBuf = sBuf + i;
}
else
{
alert(i);
clearInterval(mydo);
}
}
mydo=setInterval(myadd,100);
</script>

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧