大侠们好,我的页面有一个计时器,每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>