我有一个getJson调用web服务,工作正常,现在我试图每10秒发出一次请求.使用带有回调函数的setInterval来触发警报弹出.我不能让它发挥作用.这是代码:
function ajxCall(){
$.getJSON('http://api.tubeupdates.com/?method=get.status&lines=all&return=name,status,messages,status_starts&jsonp=?',
function (result){
$.each(result.response.lines, function(i, item){
$('#status').append("<p>"+item.name + " - " + item.status + " <br><b>" +item.messages + "</b> " + item.status_starts + "</p>");
});
});
}
setInterval(ajxCall(), (10 * 1000), function(){
alert('called!')
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
提前致谢,
毛罗
我如何控制for循环运行的间隔?
例如
for (i=0;i<5;i++) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
但我希望for循环每60ms运行一次,而不是尽快运行.有点像是如何setInterval工作.
我正在编写一个jQuery插件,只需按一下按钮即可操作输入字段的值.
到目前为止我所拥有的是通过单击按钮来控制值的能力,以及如果用户按下按钮则不断增加它的能力.简化,脚本是这样的:
var element = $('#test-input');
var interval;
$('#test-up-button').on({
mousedown : function(e) {
element.val(parseInt(element.val()) + 1);
//Wait 400ms, than do the interval
interval = window.setInterval(function() {
element.val(parseInt(element.val()) + 1);
}, 200);
e.preventDefault();
},
mouseup : function() {
window.clearInterval(interval);
}
});
Run Code Online (Sandbox Code Playgroud)
(您还可以在此处查看工作版本:http://jsfiddle.net/Husar/Hxhsh/#base)
但是,正如您在注释中看到的那样,我也希望当mousedown事件发生时,在值初始增加之后,间隔函数将延迟400ms,而不是执行.
因此,您按下按钮,值变为+ 1,您按住按钮一点,然后间隔开始滚动.
考虑重复循环
setInterval(function(){
$('.test').each(function(idx){
var duration = 1000;
$(this).delay(duration*idx);
Some stuff here
});
}, 4000);
Run Code Online (Sandbox Code Playgroud)
如何计算内部循环setInterval动态设置所花费的总时间?
在这里,如果我们有4个元素带班的test,对循环用完美的作品setInterval的4000.如何创建变量以动态设置此值?例如,设置它6000,当我们有6个元素时,依此类推.
我的问题是,我不能使用duration*idxfor 的值setInterval,因为它在里面idx function.
我需要实时显示我的内容,但是当加载这么多东西时,它占用了很多CPU并且非常迟钝.
我的代码下面有替代品吗?
$(document).ready(function() {
var refresh_bal = setInterval(
function (){
$.get('./php/get_balance.php', function(balance) {
$('.balance').html(balance);
});
}, 1000);
var refresh_total = setInterval(
function (){
$.get('./php/get_total_bets.php', function(total) {
$('.total').html(total);
});
}, 1000);
var refresh_profit = setInterval(
function (){
$.get('./php/get_profit.php', function(profit) {
$('.profit').html(profit);
});
}, 1000);
$('.haa').on('click', function() {
var refresh_bets = setInterval(
function (){
$.get('./php/get_bets.php', function(bets) {
$('.betsTable').html(bets);
});
}, 1000);
});
var refresh_site = setInterval(function (){
$.get('./php/get_site.php', function(site) {
$('.siteStats').html(site);
});
}, 1000);
var refresh_client = setInterval(function (){
$.get('./php/get_client.php', function(client) { …Run Code Online (Sandbox Code Playgroud) 我在StackOverflow上看到的几乎所有SetInterval错误都是由于将函数名称作为"字符串"传递,但也许我仍然缺少某种变量范围问题.请指教!
我正在创建一个具有暂停和播放功能的幻灯片.在播放时,我希望幻灯片每3秒前进一次.但执行一次后,启动NextSlide函数的SetInterval失败.
我试过它......
SetInterval("nextSlide()", 3000)
SetInterval(nextSlide(), 3000)
var t = SetInterval(nextSlide(), 3000)
var t = SetInterval(function(){nextSlide(), 3000)
Run Code Online (Sandbox Code Playgroud)
......每次都失败了.我在这里错过了什么?
var slide_1 = "slide_1";
var slide_2 = "slide_2";
var slideNum = 0;
var odd = true;
var totalMax = 6;
var busy = false;
var allSlides = new Array();
allSlides[0] = "test_01";
allSlides[1] = "test_02";
allSlides[2] = "test_03";
allSlides[3] = "test_04";
allSlides[4] = "test_05";
allSlides[5] = "test_06";
allSlides[6] = "test_07";
function PlaySlide(){
var t = SetInterval(nextSlide(),3000)
document.getElementById("play").style.visibility = "hidden";
document.getElementById("pause").style.visibility = "visible"; …Run Code Online (Sandbox Code Playgroud) 我有时会在我的chrome控制台中收到一个错误,说'未捕获RangeError:超出最大调用堆栈大小' 我不确定是什么导致它但我相信它与我在我使用的JavaScript setInterval方法有关. js文件.
我使用setInterval方法在用户不活动4秒后隐藏粘性顶部导航,粘性导航在用户移动鼠标或进行按键后重新出现.
此外,虽然下面的代码正如Chrome中所描述的那样工作,但在Firefox中它只能工作一次,即粘性导航被隐藏一次并在鼠标/按键上重新显示但不会再次消失.
可能导致此错误的原因是什么?
为什么Firefox的行为与Chrome不同?
我想可能在我如何使用setInterval方法时出错.在下面的代码中,我在开始时设置间隔并在用户点击导航按钮(即.mk-nav-responsive-link)后清除间隔,然后当用户单击导航按钮关闭菜单时,我重新启动间隔方法.
<!-- CODE ABOVE OMITTED FOR BREVITY -->
// Hide Nav on User Inactivity START
var userInactivity = 1;
var userInactivityInterval = setInterval(function(){userInactivityTimer()},1000);
function userInactivityTimer(){
if(userInactivity == 4 && jQuery(window).scrollTop() > (vh/8)){
jQuery('.mk-nav-responsive-link img').fadeOut();
userInactivity = 1;
}
userInactivity = userInactivity+1;
// console.log(userInactivity);
// console.log(jQuery(window).scrollTop());
jQuery(document).bind('mousemove keypress', function() {
jQuery('.mk-nav-responsive-link img').fadeIn();
userInactivity = 1;
});
}
// Hide Nav on User Inactivity END
// CUSTOM DROP DOWN MENU TRANSITIONS …Run Code Online (Sandbox Code Playgroud) setInterval()只运行一次...... WTF正在进行中?
SO正在询问更多细节,但提供一个JSFiddle就像我可以描述一样?我尝试过使用匿名函数,现在又回调了.我只是不明白吗?: - /
HTML
<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<div id="qanda-timer-container">
<div class="qanda-timer">
<span id="qanda-time-remaining"></span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS
function intervalFunc(thinkingTime, answerTime)
{
jQuery('#qanda-time-remaining').text(''+(thinkingTime - 1));
}
function enableTimer(time)
{
var intervalID;
var hasThinkingTime = true;
var thinkingTime = time;
var hasAnswerTime = true;
var answerTime = 10;
if(hasThinkingTime && hasAnswerTime)
{
setInterval( intervalFunc(thinkingTime, answerTime), 1000);
}
setTimeout(function(){
clearInterval(intervalID);
}, time * 1000);
}
enableTimer(30);
Run Code Online (Sandbox Code Playgroud) 嗨,
我有这个代码:
//<![CDATA[
$(window).load(function(){
setInterval(function(){
// toggle the class every 10 seconds
$('body').addClass('new');
setTimeout(function(){
// toggle back after 10 seconds
$('body').removeClass('new');
},10000)
},10000);
});//]]>
Run Code Online (Sandbox Code Playgroud)
该代码应该在页面首次加载后10秒后将类"new"添加到正文中,然后再次在10秒后将其删除以开始进入无限循环.但它不会按预期工作.有时它需要超过10秒才能添加类,并且它会过早删除它.有时它只做一次然后循环结束就像那样.
这里有什么不对?一个更有效和可靠的替代方案也将受到欢迎.
谢谢.
我想使用setInterval每小时,每小时调用一次API,我将如何实现它?
componentDidMount() {
fetch(fullURL)
.then((response) => response.json())
.then((responseJson) => {
// console.log(responseJson);
const resultyt = responseJson.items.map(obj => "https://www.youtube.com/embed/" + obj.id.videoId);
this.setState({resultyt});
})
.catch((error) => {
console.error(error);
});
}
Run Code Online (Sandbox Code Playgroud)
API调用存储在名为fullURL的const中
setinterval ×10
javascript ×9
jquery ×5
ajax ×1
each ×1
for-loop ×1
mousedown ×1
reactjs ×1
settimeout ×1
undefined ×1