2016-03-06 143 views
0

遇到問題 - 我應該是 - 基本範圍基礎知識。 我使用的Javascript要求JS結構,這裏是哪裏出現問題:Js/Jquery中的變量範圍問題

function GameManager() { 
    //This is the constructor of gamemanager.js file 
    this.body = $('body'); 
    this.game = $('#game'); 
} 

GameManager.prototype.createGame = function() { 

    //Code 

    //this line works 
    this.body.append(//Some HTML); 
} 

GameManager.prototype.showGame = function() { 
    //Code 

    //this line does not work wtf 
    this.game.removeClass("display-none"); 
    //and this one does work. 
    $("#game").removeClass("display-none"); 
} 

我使用this.body succefully所以我想使用this.game相同的方式,但它不工作。我可以設法通過直接使用$(「#遊戲」),但它使得jquery每次運行通過DOM,所以沒有真正優化...

我肯定缺少一些基本點在這裏,有人可以解釋一下嗎?

謝謝

+1

你在哪裏創建了'GameManager'的對象? –

+0

不確定要理解這個問題。我沒有在那裏使用對象。 – GreatHawkeye

+0

好的,你在哪裏使用這段代碼? 'var something = new GameManager();' –

回答

0

這是爲我工作。我可以在沒有問題的情況下從div中移除display-none類。它不會顯示。你需要改變CSS。 this.body.css( 「顯示」, 「塊」);例如。

window.onload = function() { 

function GameManager() { 
    //This is the constructor of gamemanager.js file 
    this.body = $('body'); 
    this.game = $('#game'); 
} 

GameManager.prototype.createGame = function() { 

    //Code 

    //this line works 
    this.body.append(); 
} 

GameManager.prototype.showGame = function() { 
    //Code 

    this.body.css("display", "block"); 
    //this line does not work wtf 
    this.game.removeClass("display-none"); 
    //and this one does work. 
    //$("#game").removeClass("display-none"); 
} 


var myGame = new GameManager(); 
myGame.showGame(); 
}