我正在尝试用JavaScript编写自己的幻灯片。我已经有了一个可以在Opera,Safari和Chrome中运行的框架:
var slideShow = (function() {
var latestGames = document.getElementById('latestGames').getElementsByTagName('li');
var displayedGame = 0;
return {
init: function() {
latestGames[displayedGame].style.display = 'inline';
setInterval(this.update, 3000);
},
update: function(gameToDisplay) {
console.log("Displayed game: " + displayedGame);
latestGames[displayedGame].style.display = 'none';
gameToDisplay = gameToDisplay || (displayedGame === (latestGames.length - 1) ? 0 : ++displayedGame);
console.log("Game to display: " + gameToDisplay);
console.log('====================');
latestGames[gameToDisplay].style.display = 'inline';
displayedGame = (gameToDisplay == latestGames.length ? 0 : gameToDisplay);
}
}
})();
但是在Firefox中,当我登录gameToDisplay变量时,我只会得到随机数。我看不到错误在哪里。
预先感谢。
最佳答案
使用以下代码:
var self = this; // preserve this to be used inside the callback
setInterval(function() { self.update(); }, 3000)
通常,您所做的工作会起作用,但是某些(Gecko-based)浏览器会将参数传递给计时器回调函数。