我试图通过自己的方式改变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 + "%");
//}
从理论上讲,你会认为重复,直到你移开光标,这会清除间隔。当我将鼠标悬停在它上面时,它会执行一次并且不会重复(没有错误)。然后,当我将其悬停时,会出现错误“Uncaught ReferenceError:timerID is defined defined”
答案 0 :(得分:15)
setInterval
根本不起作用。你没有将它作为第一个参数传递给它。
您正在立即致电alert
并尝试将其返回值用作重复功能。
var timerID = setInterval(function () { alert(left_num1) }, 1000);
答案 1 :(得分:14)
所以你在这里遇到两个不同的问题:
// (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
。你不传递函数本身。
答案 2 :(得分:6)
您正在指定null
作为要呼叫的功能。为什么?因为您调用了alert
并将其返回值分配给setInterval参数。
相反,请使用匿名函数:
setInterval(function() {doStuff();},1000);
答案 3 :(得分:0)
非常简单;-) ...我喜欢jquery,无论是哪个版本......你需要javascript纯粹发送给我,我可以帮忙。
umavez = 0;
setInterval(function() {
if (umavez == 0) {
for (x=0;x<10;x++) {
$('div.test').append('<div>'+x+'</div>');
}
}
umavez = 1;
}, 500);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="test">Linha:</div>
&#13;