xhbmj(我右边有★★★★★) :错误:循环之外不能有break
qiushuiwuhen(秋水无恨) :错误:例外被抛出且未被接住由于事实上的我c函数会被很多地方用到,我不希望这个函数的使用需要附加条件
例如,秋水的方法需要在最外层的调用里加上try catch语句;在本例程序中,是在a函数里面加

解决方案 »

  1.   

    谁说循环之外不能有break;????switch(a)
    {
      case "1": ;;break;
      case "2": ;;break;
    }就是要出现某种情况结束吗?那就用一个对象记录状态,然后到某种状态的时候return不就完啦。
      

  2.   

    runmin(*^_^*):
    1."循环之外不能有break"是程序运行出错时MS Script Debugger说的,至于Switch算不算反例,JK也不大清楚。
    2.return只能结束本函数的执行,不能终止script。在本例中,如果在c函数里加上一个return ,结果是alert("没有达到目的!");这一句仍会执行。欢迎继续关注!
      

  3.   

    // 要靠你自己程序的逻辑来决定是否继续运行,例如
    function a(){
    if(!b()) return;
    alert("没有达到目的!");
    }
    function b(){
    if(!c()) return false;
    // do something esle
    return true;
    }
    function c()
    {
    //请在这里加一段scritp代码
     if(some_thing_wrong) reutrn false;
     //other code ....
     return true; // normal exit;
    }a();
      

  4.   

    if (checknamestr(window.userform.text1.value) && checkpwdstr(window.userform.password1.value) && checkemailstr(window.userform.text2.value) && checkoicqstr(window.userform.text3.value) && checktelstr(window.userform.text4.value))  当checknamestr(window.userform.text1.value)返回的结果不是true时,if的条件肯定是false了,后面的也不会执行。
    把checknamestr函数里的这一段
    if (flagi==i)
    {
    alert("username successful!");
    return;
    }            
    里的return 改成return true再试一试
      

  5.   

    如果只修改被调用函数,而不修改调用函数和其他相关代码,企图在被调用函数中影响调用者的行为是不可能的,除非制造人为错误,中止所有script的运行。
    这是程序设计的基本常识。
    假如搂主的想法能够实现,程序设计的历史就要改写了。
      

  6.   

    回复人: JK_10000(JK1) ( ) 信誉:100  2002-11-06 11:30:00  得分:0 
    回复填错地方了,欢迎斑竹帮JK删掉,连同本留言
      

  7.   

    onestab(┼─):
    比如alert();confirm()等,它虽说不能永久终止其后的程序,但是它可以暂时推后在它后面的程序,为什么不能把这个暂时推到无穷呢。
    JK认为,不论程序设计的常识到底有哪些,有用的并且实现起来不很难的功能都应该实现,如果没有实现的话,那只能说明设计这一种语言的人们还应该加油。
    JK不肯定,但是希望Script是一种理想的程序,所以抱着试一试的心情来请教大家。谢谢!欢迎继续关注!
      

  8.   

    Go_Rush(阿舜) :关掉debugger是可以实现这样的功能的(它只是在状态栏里报错)。但是一方面要求别人关掉debugger是没道理的,另一方面如果别人开着debugger会给他们造成不便。再说这样做会影响公司形象的Hehe
    欢迎继续关注!
      

  9.   

    这是在 csdn 看到的代码,(不记得是哪位老大写的了,抱歉!).
    呵呵 不知这个对你有没帮助.....============================================================
    <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()",20);
    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>
    ==================================================
      

  10.   

    goldenlove(潇洒.net) :
    先谢谢你的代码!
    看了一下这段程序,它是通过function run_step2()调用自己实现循环,通过改变全局变量来实现是否还继续调用自己。不过我还是不能从它得到启发,也不能实现我最初的意图。欢迎继续关注
      

  11.   

    宽哥:   我认为只修改c函数恐怕难以实现,但如果你的a(),b()撰写模式稍加修改,或许是一个好的方法,
       看这样可不可以:
    <script>
    function a(){
    if(!b())return;//在调用其他函数时判断结果
    alert("没有达到目的!");
    }
    function b(){
    c();
    //return true;//如果此行略过则预设值为false
    }
    function c()
    {//请在这里加一段scritp代码}a();</script>
      

  12.   

    Xiao:
    不觉己有一年
    诸兄弟可好!
      

  13.   

    Solo:
    现在的问题是:
    c函数是JK写,但是用c函数的人却不一定是JK,JK不希望在告诉别人用这个函数的时候还要附加很多条件。原题见这一贴:http://expert.csdn.net/Expert/topic/1092/1092742.xml?temp=.6329157
    里面还有一个问题没有解决:有可能发生抢焦点的死循环(如该贴说明的第一条)
    将那个问题进行精简,就成了这一贴的问题hehe
    欢迎继续关注
      

  14.   

    c函数是JK写,但是用c函数的人却不一定是JK
    事先总的有个约定吧?应当由c的调用者决定是否继续。
      

  15.   

    同意,onestab(┼─),c()只提供返回值(true or false)
      

  16.   

    在这一个问题没有解决之前,JK要求其他写程序的人不要将NaN值填入应该输入数值的输入框里。照说这个要求应该不算苛刻,他们(Coding人员)也能接受,到现在也没有出岔子。
    至少至少这个问题是个隐患,JK希望消除这个隐患,看来这个希望是要落空的了多谢多谢