Javascript twilio php中的断开连接调用后停止计时器
我正在使用TwilioAPI在php中使用CallConnect和disconnect模块,每当我断开连接,计时器就不会停止,下面是我的代码 //当点击应答按钮时计时器启动Javascript twilio php中的断开连接调用后停止计时器,javascript,php,jquery,twilio,Javascript,Php,Jquery,Twilio,我正在使用TwilioAPI在php中使用CallConnect和disconnect模块,每当我断开连接,计时器就不会停止,下面是我的代码 //当点击应答按钮时计时器启动 $('#answer').on('click', function() { var countdown = document.getElementsByTagName('countdown')[0], start = document.getElementById('start'), stop = docu
$('#answer').on('click', function() {
var countdown = document.getElementsByTagName('countdown')[0],
start = document.getElementById('start'),
stop = document.getElementById('stop'),
clear = document.getElementById('clear'),
seconds = 0, minutes = 0, hours = 0,
t;
function add() {
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
if (minutes >= 60) {
minutes = 0;
hours++;
}
}
countdown.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds);
document.getElementById('checkyear').value = countdown.textContent;
timer();
}
function timer() {
t = setTimeout(add, 1000);
}
timer();
});
//断开呼叫时计时器应停止
Twilio.Device.disconnect(function (conn) {
clearTimeout(t);
});
这里是Twilio开发者福音传道者 我认为这里的问题是范围问题。变量t设置为用于向上计时的超时ID,它仅在单击“应答”按钮时调用的事件处理函数中可用 当它位于Twilio.Device.disconnect处理程序中时,t是未定义的 我会重新安排代码,使计时变量和函数在click事件处理程序之外,因此它们在disconnect处理程序的作用域内。大概是这样的:
var t, seconds, minutes, hours;
Twilio.Device.disconnect(function(conn) {
clearTimeout(t);
});
function add() {
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
if (minutes >= 60) {
minutes = 0;
hours++;
}
}
countdown.textContent =
(hours ? (hours > 9 ? hours : '0' + hours) : '00') +
':' +
(minutes ? (minutes > 9 ? minutes : '0' + minutes) : '00') +
':' +
(seconds > 9 ? seconds : '0' + seconds);
document.getElementById('checkyear').value = countdown.textContent;
timer();
}
function timer() {
t = setTimeout(add, 1000);
}
$('#answer').on('click', function() {
var countdown = document.getElementsByTagName('countdown')[0],
start = document.getElementById('start'),
stop = document.getElementById('stop'),
clear = document.getElementById('clear');
seconds = 0;
minutes = 0;
hours = 0;
timer();
});