如何使用 jquery/javascript 正确更新 setInterval?
How do I correctly update setInterval using jquery/javascript?
所以我有一个 div 在屏幕上淡入和淡出,发生这种情况的速率由用作旋钮的输入值给出(通过使用 knob.js).我希望用户能够动态更改旋钮上的值,然后为 setInterval 设置新的速率。但是,这并没有发生,无论 dial/knob 上的更改如何,它都会继续停留在默认值。如果有人能指出我做错了什么,或以任何方式提供帮助,我将不胜感激。
$(function (){
$(".dial").knob();
$("#reknob").val().trigger("change");
});
function fadeRed() {
$("#rediv").fadeOut();
$("#rediv").fadeIn();
}
function getRed() {
refreq=$("#reknob").val();
return refreq;
}
setInterval(function () {
fadeRed();
},getRed());
您需要使用更改处理程序来重置间隔
$(function() {
var reknobInterval;
$("#reknob").knob({
change: function(v) {
reset(+v)
}
});
reset(+$("#reknob").val())
function reset(value) {
$("#rediv").stop(true, true).show();
clearInterval(reknobInterval);
reknobInterval = setInterval(fadeRed, value * 1000); //convert the delay to seconds
}
function fadeRed() {
$("#rediv").fadeOut().fadeIn();
}
});
<script type="text/javascript" src="//code.jquery.com/jquery-1.8.3.js"></script>
<script type="text/javascript" src="http://anthonyterrien.com/js/jquery.knob.js"></script>
<input id="reknob" class="dial" data-width="150" data-cursor=true data-thickness=.3 data-fgColor="#222222" data-min="1" data-max="10" />
<div id="rediv">rediv</div>
所以我有一个 div 在屏幕上淡入和淡出,发生这种情况的速率由用作旋钮的输入值给出(通过使用 knob.js).我希望用户能够动态更改旋钮上的值,然后为 setInterval 设置新的速率。但是,这并没有发生,无论 dial/knob 上的更改如何,它都会继续停留在默认值。如果有人能指出我做错了什么,或以任何方式提供帮助,我将不胜感激。
$(function (){
$(".dial").knob();
$("#reknob").val().trigger("change");
});
function fadeRed() {
$("#rediv").fadeOut();
$("#rediv").fadeIn();
}
function getRed() {
refreq=$("#reknob").val();
return refreq;
}
setInterval(function () {
fadeRed();
},getRed());
您需要使用更改处理程序来重置间隔
$(function() {
var reknobInterval;
$("#reknob").knob({
change: function(v) {
reset(+v)
}
});
reset(+$("#reknob").val())
function reset(value) {
$("#rediv").stop(true, true).show();
clearInterval(reknobInterval);
reknobInterval = setInterval(fadeRed, value * 1000); //convert the delay to seconds
}
function fadeRed() {
$("#rediv").fadeOut().fadeIn();
}
});
<script type="text/javascript" src="//code.jquery.com/jquery-1.8.3.js"></script>
<script type="text/javascript" src="http://anthonyterrien.com/js/jquery.knob.js"></script>
<input id="reknob" class="dial" data-width="150" data-cursor=true data-thickness=.3 data-fgColor="#222222" data-min="1" data-max="10" />
<div id="rediv">rediv</div>