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);
}

解决方案 »

  1.   

    <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>
      

  2.   

    以前写的一段代码,原来帖在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> &nbsp; <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的时间间隔设置大一点比较好。
      

  3.   

    感谢各位回复。
    我的问题是在使用按键window.event.keyCode的方法时,往往是while循环执行完了才能响应window.event.keyCode,因此keyCode在执行循环体中无法改变值,如果将key=window.event.keycode语句放在循环体中,会出现对象没找到的错误。
      

  4.   

    <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>
      

  5.   

    谢谢 seabell,我看在while循环体中是不能中断的了。