簡體   English   中英

javascript setInterval不適用於對象

[英]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);
});

問題是kPdocument.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM