function HA(){
ha=setInterval("alert('haha')",2000);
}
<input type="button" value="唉" onclick="HA()" />
<input type="button" onclick="clearInterval(ha);" />

解决方案 »

  1.   

    clearInterval 是清除对setInterval函数的调用你每次点击“唉”就有一个ha 再点又有一个ha 你再清除 当然清除不了了 呵呵
      

  2.   

    比如你第二次点击后,又生出了一个setInterval...而指向第一个的ha现在指向第二个了。你清除的动作,只是清除第二个的。第一个没被你清除。
    改成这样<script type="text/javascript">
    var ha;
    function HA() {        
    clearInterval(ha);
    ha=setInterval("alert('haha')",2000);
    }
    </script>
      

  3.   

    每点一次都会执行一个setInterval("alert('haha')",2000);,比如第一次点 ha =1,第二次又点,ha =2;
     你关闭的话只会关闭 ha=2的那个,ha=1的那个还在运行。