我有一个功能,可以在setInterval
var intval;
function loadvideo(video_id)
{
clearInterval(intval);
var intval=setInterval(function() { callAjax(video_id); }, 3000);
}
这是函数callAjax
function callAjax(vid){
console.log(vid);
}
当我第一次刷新浏览器时它会正常工作,但每当我调用loadvideo
函数时,我会在loadvideo
函数的控制台中看到2个不同的值。这意味着旧值未清除且setInterval
调用callAjax
功能2次。每次调用loadvideo
函数时,它都会增加调用。我在这里做错了什么?
我想要做的只是更新video_id into interval when
loadvideo`函数调用。
答案 0 :(得分:0)
因为你在函数中使用了var关键字。此关键字定义局部变量,并将intertval设置为此局部变量,而不是通过loadvideo函数定义的全局变量。
var intval;
function loadvideo(video_id)
{
clearInterval(intval);
intval=setInterval(function() { callAjax(video_id); }, 3000);
}
答案 1 :(得分:0)
试试这个。
var intval;
loadvideo(178)
function loadvideo(video_id)
{ intval=setInterval(function() { callAjax(video_id); }, 1000); }
function callAjax(vid){
console.log(vid);
clearInterval(intval)
}