Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 在jQuery中使用setInterval调用函数?_Javascript_Jquery - Fatal编程技术网

Javascript 在jQuery中使用setInterval调用函数?

Javascript 在jQuery中使用setInterval调用函数?,javascript,jquery,Javascript,Jquery,我试图在jQuery中创建对函数的间隔调用,但它不起作用!我的第一个问题是,我可以将普通JavaScript与jQuery混合使用吗 我应该使用setInterval(“test()”,1000)或类似的内容: var refreshId = setInterval(function(){ code... }, 5000); 我将调用的函数放在何处,如何激活间隔?与jQuery相比,如何在JavaScript中声明函数有什么不同吗?jQuery只是一组用JavaScript编写的帮助程

我试图在jQuery中创建对函数的间隔调用,但它不起作用!我的第一个问题是,我可以将普通JavaScript与jQuery混合使用吗

我应该使用
setInterval(“test()”,1000)或类似的内容:

var refreshId = setInterval(function(){
    code...
}, 5000);

我将调用的函数放在何处,如何激活间隔?与jQuery相比,如何在JavaScript中声明函数有什么不同吗?

jQuery只是一组用JavaScript编写的帮助程序/库。您仍然可以使用所有Javascript特性,因此您可以调用任何函数,也可以从jQuery回调内部调用。
因此,这两种可能性都应该是可以的。

要编写最好的代码,您“应该”使用后一种方法,并使用函数引用:

var refreshId = setInterval(function() {}, 5000);

但是你的方法

function test() {}
var refreshId = setInterval("test()", 5000);
基本上也是有效的(只要
test()
是全局的)


请注意,实际上没有“在jQuery中”这样的东西。您仍然在编写Javascript语言;您只是在使用一些预先制作好的函数,这些函数是jQuery库。

首先:是的,您可以将jQuery与公共JS混合使用:)

建立函数间隔调用的最佳方法是使用setTimeout方法:

例如,如果您有一个名为test()的函数,并希望将其全部重复5秒钟,则可以按如下方式构建它:

function test(){
    console.log('test called');
    setTimeout(test, 5000);
}
最后,您必须触发该函数一次:

$(document).ready(function(){
    test();
});

加载所有html后,将自动调用此document ready函数

我已经为setInterval函数编写了一个自定义代码,它也有帮助

setInterval(function() {
    updatechat();
}, 2000);

function updatechat() {
    alert('hello world');
}
let间隔;
函数startInterval(){
间隔=设置间隔(appendDateToBody,1000);
控制台日志(间隔);
}
函数appendDateToBody(){
document.body.appendChild(
document.createTextNode(新日期()+);
}
函数stopInterval(){
间隔时间;
控制台日志(间隔);
}

设定间隔

(a)jQuery是JavaScript。这就像如果你问我是否在PHP中使用框架XYZ,我还能使用PHP吗?(b) 始终将函数引用传递给
setInterval
(c)请发布您的代码。如果您将字符串传递给
setInterval
,那么函数在何处声明(必须在全局范围内)并不重要,这也是您应该避免使用它的原因。为什么不使用setInterval来执行此操作呢?使用settimeout,我始终确定,我的函数的调用总是在所需的时间和函数完成后发生。。。设置间隔5秒就可以了。。。但是如果你有更严格的时间框架,你的函数在300毫秒后没有完成,你又调用了函数,会发生什么呢???使用settimeout,这是不可能发生的…jQuery是常见的JS。这只是一堆函数。初学者似乎认为它是一种独立的语言,因为他们以前从未见过正确编写Javascript(而jQuery文档和示例使用它)。@InfernalBadger:ayk本质上是在重复之间引入手动延迟,保证回调在安排重复之前完成的时间。在某些情况下,这是完全可以的:只需注意三次300毫秒的迭代可能不需要900毫秒就可以完成。是的,这是真的。。。但最后jQ为js编程提供了一个简单的入口,所以…:)是的,使用我的方法,您在20秒后不会有4次函数调用…:)它将在20秒和4x1ms之后出现:DHmmm,如果我使用var refreshId=setInterval(function(){},5000);每5秒调用一次的函数是否应该在{}之间,而不是单独在一个具有名称的单独函数中?希望你明白我的意思!?我想要实现的是一个滑块动画,在几秒钟后移动。@user637364:没错。我内联生成了一个匿名函数。@user637364:只需将应该调用的函数传递给
setInterval
。您可以将其包装为一个额外的函数调用,但这只会产生不必要的开销。值得一提的是,第三个示例会导致JS引擎重新分析/重新编译代码,从而使其成为三者之间速度较慢的方法。由于概念完全不同,它也容易增加内存以及潜在的内存泄漏。Christian是对的(尽管以5秒的重复率,感知到的速度差异可能可以忽略不计)。
setInterval(function() {
    updatechat();
}, 2000);

function updatechat() {
    alert('hello world');
}