[英]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.