有两个js函数如下:
function showStatus(){
      clearInterval(timer);
      loadStatus();
      timer = window.setInterval("loadStatus()",10000);
    }
function showVision(){
      clearInterval(timer);
      loadVision();
      timer = window.setInterval("loadVision()",10000);
    }
其中网页中有两个按钮点击时的响应即为这两个函数。想在点击另一个按钮时,自动终止原来的定时器,可是如代码这样做时,并未成功结束?请问各位高手这个该如何实现?

解决方案 »

  1.   

    1、timer应为全局变量
    2、应当有timer1,timer2两个变量
    3、clearInterval 后,又执行了定时器执行的函数并且 setInterval 了……
      

  2.   


    var timer1,timer2;
    function showStatus(){ 
          clearInterval(timer1); 
          loadStatus(); 
          timer1 = window.setInterval("loadStatus()",10000); 
        } 
    function stop1(){
    clearInterval(timer1); 
    }
    function showVision(){ 
          clearInterval(timer2); 
          loadVision(); 
          timer2 = window.setInterval("loadVision()",10000); 
        } 
    function stop2(){
    clearInterval(time2)
    }
      

  3.   

    这是我写的一个例子,你可以看看是不是你想要的结果!<html>
    <body>
    <script language="javascript">
    var timeout=0;
    var timer;
    function cal(){
      if(startButton.value=="开始"){
       startButton.value="暂停";
        timer=setInterval("timeout++;textField.value=(timeout);",1000)
    }else{
        clearInterval(timer);
         startButton.value="开始";
      }
    }
    function reset(){
    startButton.value="开始";
      textField.value=" ";
      if(timer!=null){
        timeout=0;
    clearInterval(timer);
    }
    }
    </script>
    <input type="text" size=10 name="textField">
    <input type="submit" size=10 name="startButton" value="开始" onclick="cal();">
    <input type="submit" size=10 name="resetButton" value="重置" onclick="reset();">
    </body>
    </html> 
      

  4.   

    timer定义重复了,你可能停止了一个。换成两个试一试
      

  5.   

    timer现在定义的就是全局变量。其实是有多个按钮的,不是只有两个。怎么点其中一个的时候,自动结束原来那一定时器呢(原来的这个可能是所有按钮中的任意一个)。
      

  6.   

    这么做理论上是没有问题的,但是timer变量要提前声明,见代码:var timer = null;// 加上timer量的声明
    function showStatus(){ 
        clearInterval(timer);
        loadStatus(); 
        timer = window.setInterval("loadStatus()",10000); 

    function showVision(){
        clearInterval(timer); 
        loadVision(); 
        timer = window.setInterval("loadVision()",10000); 
    }
      

  7.   

    可能是你load之类函数有用到全局变量,而你只清空了timer,没有清空其他变量。用法和楼上的都是一样的。