Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 setInterval()不重复。只工作一次_Javascript_Jquery_Css - Fatal编程技术网

Javascript setInterval()不重复。只工作一次

Javascript setInterval()不重复。只工作一次,javascript,jquery,css,Javascript,Jquery,Css,我试图让一个div的左属性在你悬停的时候每秒钟改变一次,所以我做了这个: $("div.scroll_left").hover(function(){ var left_num = $('div.license_video').css("left") var left_num1 = parseInt(left_num, 10) - 1; var timerID = setInterval(alert(left_num1), 1000); //var timerID

我试图让一个div的左属性在你悬停的时候每秒钟改变一次,所以我做了这个:

$("div.scroll_left").hover(function(){
    var left_num = $('div.license_video').css("left")
    var left_num1 = parseInt(left_num, 10) - 1;
    var timerID = setInterval(alert(left_num1), 1000);
    //var timerID = setInterval(slideleft(left_num1), 1000);
},function(){
    clearInterval(timerID);
});
//function slideleft(left_num){
    //$('.license_video').css('left', left_num + "%");
//}

理论上,你会认为它会重复,直到你把光标移开,清除了间隔。当我将鼠标悬停在它上面时,它只会执行一次,不会重复(没有错误)。然后,当我将鼠标悬停在off位置时,它会给出一个错误“未捕获引用错误:未定义timerID”

setInterval
根本不起作用。您没有将函数作为第一个参数传递给它

您正在立即调用
警报
,并尝试使用其返回值作为重复函数

var timerID = setInterval(function () { alert(left_num1) }, 1000);

这里有两个不同的问题:

// (1) timerID needs to be defined in a scope accessible to both hover callbacks
var timerID = null;

$("div.scroll_left").hover(function(){
    var left_num = $('div.license_video').css("left")
    var left_num1 = parseInt(left_num, 10) - 1;

    // (2) Pass a *function* to setInterval
    timerID = setInterval(function () {
        alert(left_num1)
    }, 1000);
}, function(){
    clearInterval(timerID);
    timerID = null;
});
当你写作时

setInterval(alert(left_num1), 1000);
// or
setInterval(slideleft(left_num1), 1000);

您正在将调用
alert()
slideleft()
(分别)返回的值传递到
setInterval
。您没有传递函数本身。

您正在指定
null
作为要调用的函数。为什么?因为您调用了
alert
,并将其返回值赋给了setInterval参数

相反,请使用匿名函数:

setInterval(function() {doStuff();},1000);
很容易;-)。。。我喜欢jquery,不管是哪个版本。。。你需要javascript纯是发送下午我是可以帮助的

umavez=0;
setInterval(函数(){
如果(umavez==0){

对于(x=0;xtimerId是在.hover(函数()…尝试在$(“div.scroll_left”)…之前定义timerId的范围内定义的)(我认为这并不能解决setInterval重复问题,但这是一个开始)。您可能需要考虑使用。除了删除
警报()
并放置
slideleft()
函数返回。没有人希望在间隔上发出警报。这不适用于setInterval(function(){$('.license_video').css('left',left_num+“%”),1000);这就是我以前没有使用它的原因。此外,我仍然收到“未捕获的引用错误:未定义timerID”error@RosengustaGarrett我的回答解释了如何解决这个问题“未捕获引用错误”问题。