Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
95
rated 0 times [  98] [ 3]  / answers: 1 / hits: 27610  / 15 Years ago, mon, january 4, 2010, 12:00:00

I have a simple javascript class.



One method of this class sets up a timer using setInterval function. The method that I want to call every time the event fires is defined inside the same class.



The question is, how can I pass this method as a parameter to the setInterval function?



One attempt was setInterval('this.showLoading(), 100). But doesn't work. This method access class properties, so I need the 'this' reference.



This is the sample code:



    function LoadingPicture(Id)
{
this.imgArray = null;
this.currentImg = 0;
this.elementId = Id;
this.loadingTimer = null;
}


LoadingPicture.prototype.showLoading = function()
{
if(this.currentImg == imgArray.length)
currentImg = 0;

document.getElementById(this.elementId).src = imgArray[this.currentImg++].src;
}


LoadingPicture.prototype.StartLoading = function()
{
document.getElementById(this.elementId).style.visibility = visible;
loadingTimer = setInterval(showLoading(), 100);
}

More From » javascript

 Answers
23

setInterval can take a function directly, not just a string.
https://developer.mozilla.org/en/DOM/window.setInterval



i.e.



loadingTimer = setInterval(showLoading, 100);


But, for optimal browser compatibility, you should use a closure with an explicit reference:



 var t = this;
loadingTimer = setInterval(function(){t.showLoading();}, 100);

[#97923] Thursday, December 31, 2009, 15 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
bryantc

Total Points: 455
Total Questions: 96
Total Answers: 110

Location: San Marino
Member since Thu, Jun 30, 2022
2 Years ago
bryantc questions
Fri, Aug 13, 21, 00:00, 3 Years ago
Tue, Mar 30, 21, 00:00, 3 Years ago
Fri, Jun 5, 20, 00:00, 4 Years ago
Wed, May 27, 20, 00:00, 4 Years ago
;