[英]javascript setInterval not working for object
所以,我正在尝试创建一个javascript对象,并使用setInterval方法。
这似乎不起作用。 如果我删除引号,则该方法运行一次。 有什么想法吗? 另外,我正在使用Jquery。
<script>
$(function(){
var kP = new Kompost();
setInterval('kP.play()', kP.interval);
});
var Kompost = function()
{
this.interval = 5000;
var kompost = this;
this.play = function()
{
alert("hello");
}
}
</script>
@Yacoby和@Nick提供的解决方案仅在play
方法本身不使用this
值时才有效,因为this
值将指向全局对象。
要处理这个问题,您需要另一种方法,例如:
$(function(){
var kP = new Kompost();
setInterval(function () {
kP.play();
}, kP.interval);
});
也可以看看:
像这样称呼它:
$(function(){
var kP = new Kompost();
setInterval(kP.play, kP.interval);
});
问题是kP
在document.ready
处理程序中并且在全局上下文中不可用(它仅在该闭包内可用)。 将字符串传递给setInterval()
或setTimeout()
它将在全局上下文中执行。
如果你检查你的控制台,你会发现它错误,说kP
是未定义的,在这种情况下是正确的。 总的来说,它应该是这样的:
var Kompost = function()
{
this.interval = 5000;
var kompost = this;
this.play = function() {
alert("hello");
};
};
$(function(){
var kP = new Kompost();
setInterval(kP.play, kP.interval);
});
它适用于像thymeleaf等的每个地方......
function load() {
alert("Hello World!");
}
setInterval(function () {load();}, 10000);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.