关于JS停止计时器后,启动不了的问题

大侠们好,我的页面有一个计时器,每1秒访问一次action,如果action返回的数值有变化就显示一个div,然后有一个点击弹出的div时触发的方法,该方法:先停止计时器,然后改变iframe的显示页面,再把div隐藏起来,然后启动计时器,可是计时器在点击后只执行了一次。。。就停止了,这是为什么?以下是代码片段:

 function order_tip(){  
    var element = document.getElementById("tip");  
    //调用XMLHttpRequest对象的open方法,打开与服务器之间的同步通信连接  

    /** 
     * 建立异步连接 
     * xmlhttprequest.open(Method,Url,Async,User,Password)方法 
     * Method:表示Http方法,POST,GET,PUT,PROPFIND 
     * Url:参数请求的url 
     * Async:可选项,设置是否为异步通信, 
     *      默认true表示可以异步, 
     *      取false,表明异步发出请求之后不需要等待服务端的响应,继续执行其他操作。 
     * User,password:可选项,表示请求的文件需要进行服务器进行验证 
     */  
    xmlhttprequest.open("POST","user/ordercatchtip",false); 
    /** 
     * 设置请求的消息头 
     * application/x-www-form-urlencoded表示传递的是表单值 
     * 一般使用POST都必须设置此项,否则服务器无法识别传递过来的数据 
     * 虽然该值表示表单值,但是也可以一text/xml或者application/xml类型给服务器直接发送XML数据 
     * 甚至也可以application/json类型发送JavaScript对象数据 
     */  
    xmlhttprequest.setRequestHeader('Content-type','application/x-www-form-urlencoded');  
    /** 
     * 设置User-Agent为XMLHTTP便于服务器能够识别出XMLHttpRequest异步请求 
     * 和其他客户端的普通请求 
     */  
    xmlhttprequest.setRequestHeader('User-Agent','XMLHTTP');  

    /** 
     * 向服务器发送请求 
     * xmlhttprequest.send(null) 
     * 只有一个参数,该参数传递客户端发送给服务器的请求数据 
     * 该方法一般是在POST方式下传递参数,多个参数用&隔开 
     */  
    xmlhttprequest.send(null);  

    var str = xmlhttprequest.responseText;//获取action的返回值

    if(str=="notcatch"){//判断action返回值
        if(element.style.display == ""){
        }else{
            element.style.display = "none";
            element.innerHTML = "";   
        }
    }else{
        element.style.display = "";
        element.innerHTML = "商家已接单!";
    }
    }

    window.onload = function star_check(){
        timer = setInterval(order_tip,1000);//计时器
    }

    function neworder_check(){
        clearInterval(timer);//停止计时器
        //document.getElementById("tipdeal").click();//点击隐藏的超链接
        window.frames["menu"].location.href = "user/ordercatchcheck";
        document.getElementById("tip").style.display = "none";//设置属性为隐藏
        timer = setInterval(order_tip,1000);//开启计时器
    }

    <body>

    <div class="con_right">
   <iframe name="menu" src="user/menuhotlist" class="iframe_menu"></iframe>
  </div>

    <div id="tip" onclick="neworder_check()"></div>

    </body>

2个回答

F12看浏览器调试工具报什么错误。没见你在哪定义和创建xmlhttprequest这个变量

 去掉业务逻辑,专门测试定时看有没有问题
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!