我正在尝试用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)浏览器会将参数传递给计时器回调函数。

09-19 16:22