Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 再次单击按钮时clearTimeout未按预期工作_Javascript_Php_Jquery_Ajax_Cleartimeout - Fatal编程技术网

Javascript 再次单击按钮时clearTimeout未按预期工作

Javascript 再次单击按钮时clearTimeout未按预期工作,javascript,php,jquery,ajax,cleartimeout,Javascript,Php,Jquery,Ajax,Cleartimeout,我有两个按钮,当点击其中一个按钮时,时间如下所示。两个按钮都有单独的输出。我正在尝试使用clearTimeout,但由于某些原因它没有清除超时。当再次单击一个按钮时,它只是在已经存在的ajax调用之上进行另一个ajax调用。我怎样才能上班 <input type = 'submit' value = 'show time' onclick = "showTime('test1.php', 'output1',0)"> <div id = 'output1'></di

我有两个按钮,当点击其中一个按钮时,时间如下所示。两个按钮都有单独的输出。我正在尝试使用clearTimeout,但由于某些原因它没有清除超时。当再次单击一个按钮时,它只是在已经存在的ajax调用之上进行另一个ajax调用。我怎样才能上班

<input type = 'submit' value = 'show time' onclick = "showTime('test1.php', 'output1',0)">
<div id = 'output1'></div>

<input type = 'submit' value = 'show time' onclick = "showTime('test1.php', 'output2',1)">
<div id = 'output2'></div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<script type = "text/javascript"> 

var timeout = [];
function showTime(gotoUrl,output,index) {

if (timeout[index]) {
clearTimeout(timeout[index]);
}

$.ajax({
type: "POST",
url: gotoUrl,
error: function(xhr,status,error){alert(error);},
success:function(data) {
document.getElementById( output ).innerHTML = data;
showTimeX(gotoUrl, output);
} //end of success:function(data)
}); //end of $.ajax

} //end of function showTime(gotoUrl, output)

function showTimeX(gotoUrl,output,index) {

$.ajax({
type: "POST",
url: gotoUrl,
error: function(xhr,status,error){alert(error);},
success:function(data) {
document.getElementById( output ).innerHTML = data;
timeout[index] = setTimeout(function(){showTimeX(gotoUrl, output, index)}, 5000);
} //end of success:function(data)
}); //end of $.ajax

} //end of function showTime(gotoUrl, output)

</script>

var超时=[];
函数showTime(gotour、输出、索引){
if(超时[索引]){
clearTimeout(超时[索引]);
}
$.ajax({
类型:“POST”,
网址:Gotour,
错误:函数(xhr,状态,错误){alert(error);},
成功:功能(数据){
document.getElementById(输出).innerHTML=数据;
showTimeX(gotour,输出);
}//成功结束:函数(数据)
});//结束$.ajax
}//函数showTime结束(gotour,输出)
函数showTimeX(gotour、输出、索引){
$.ajax({
类型:“POST”,
网址:Gotour,
错误:函数(xhr,状态,错误){alert(error);},
成功:功能(数据){
document.getElementById(输出).innerHTML=数据;
timeout[index]=setTimeout(函数(){showTimeX(gotour,output,index)},5000);
}//成功结束:函数(数据)
});//结束$.ajax
}//函数showTime结束(gotour,输出)

您的函数
showTime(gotour,output,index)
成功调用
showTimeX(gotour,output)

但是
showTimeX(gotour,output,index)
定义要求index作为最后一个参数,在调用该函数时没有指定该参数


是否索引未定义,因此超时数组不包含任何变量?

您的函数
showTime(gotour,output,index)
成功调用
showTimeX(gotour,output)

但是
showTimeX(gotour,output,index)
定义要求index作为最后一个参数,在调用该函数时没有指定该参数


是否索引未定义,因此超时数组不包含任何变量?

您确定“.ajax”中的
showTimeX
数组对
showTimeX
可见吗?也许可以尝试将其作为参数之一传递?啊…有两个showTimeX,我只为其中一个添加了索引!smacks forehead您确定$.ajax中的
showTimeX
可以看到
timeout
数组吗?也许可以尝试将其作为参数之一传递?啊…有两个showTimeX,我只为其中一个添加了索引!拍额头