在Javascript中更新setInterval函数的毫秒参数

在Javascript中更新setInterval函数的毫秒参数,javascript,setinterval,Javascript,Setinterval,我有一个显示引号的滑块。有些引文比其他引文长,我想为用户提供足够的时间阅读它们。计时器变量正在changeQuote函数中更新,但它没有更新setInterval函数的参数。如何更新setInterval的毫秒参数?谢谢 var quotes=[{quote:'lorem ipsum', name:'test'},{quote:'lorem ipsum ipsum 2', name:'test2'}]; var x=0; var l = quotes.length; var ql=0; var

我有一个显示引号的滑块。有些引文比其他引文长,我想为用户提供足够的时间阅读它们。计时器变量正在changeQuote函数中更新,但它没有更新setInterval函数的参数。如何更新setInterval的毫秒参数?谢谢

var quotes=[{quote:'lorem ipsum', name:'test'},{quote:'lorem ipsum ipsum 2', name:'test2'}];

var x=0;
var l = quotes.length;
var ql=0;
var timer=0;

function quoteInit(){
    if(x==l) x=0;
    ql = quotes[x]['quote'].length;
    $('.quote').find('h4').html(quotes[x]['quote']);
    $('.quote').find('p').html(quotes[x]['name']);
    timer=(ql*110);
    x++;
    changeQuote(timer); 
}

function changeQuote(timer){
    console.log(timer);
    setInterval(quoteInit,timer);
}

quoteInit();

除了我的评论之外,还可以使用类似的方法停止并再次启动计时器:

function start() {
    theTimer = setInterval(quoteInit,timer);
};

function stop() {
    clearInterval(theTimer);
};

当您想以不同的间隔重置计时器时(当然,在更改
计时器之后),只需调用
stop()
start()
。这将停止计时器(使用旧的
计时器
值),并使用新值重新启动计时器。

正如大家所说,只需将
设置间隔
更改为
设置超时
即可:

var quotes=[{quote:'short',name:'test'},{quote:'medium ipsum',name:'test2'},{quote:'long lorem ipsum ipsum',name:'test3'}];
var x=0;
var l=quotes.length;
var-ql=0;
var定时器=0;
函数quoteInit(){
如果(x==l)x=0;
ql=quotes[x]['quote'].长度;
$('.quote').find('h4').html(quotes[x]['quote']);
$('.quote').find('p').html(quotes[x]['name']);
定时器=(ql*110);
x++;
更改报价(计时器);
}
函数changeQuote(计时器){
console.clear();
控制台日志(计时器);
设置超时(引用单位,计时器);
}
quoteInit()
body{font-family:Arial,Helvetica,sans-serif;文本对齐:居中;}
h4{字号:2em;字重:700;边距:0;}


setInterval
表示每X毫秒运行一次提供的函数。您所做的是创建同时运行的多个间隔。您需要a)改为使用
setTimeout
,或者b)在重新设置时间间隔之前,使用
clearInterval()
清除时间间隔。您必须创建一个函数,以使用新的时间间隔停止并重新启动计时器。编辑:啊,火箭危险品打败了我。@s1h4d0w:别担心,我仍然支持你们的评论:)谢谢你们,不幸的是,我两次都试过了,都没用。有人能举个例子吗?