2016-07-15 38 views
-1

我只在使用javascript的Hangman游戏上工作。这是一个班级。我是javascript和DOM的noob,所以请善待。在这一点上,我只想在控制台日志中打印出SOMETHING,真的。除了这里展示的少数功能和游戏过程外,我已经花了好几天和几个小时去尝试让某些东西起作用。我的思考过程是,在循环中不会改变的变量,不需要在html中动态更新,不需要成为hang子手游戏的属性。但是,当我运行下面的代码只是为了让console.log工作,我得到的userGuess没有定义。我想我是通过分配keyUp事件的值来定义它的。如果我让用户猜测Hangman游戏的属性,然后用hangmanGame.userGuess更新我的所有代码,我会得到所有这些意外的令牌错误。无法理解在Javascript中使用DOM的范围和变量

有什么想法?

//Variables=============================================================== 
var hangmanGame = {presidents: [ 
    "WASHINGTON", 
    "ADAMS", 
    "JEFFERSON", 
    "MADISON", 
    "MONROE", 
    "JACKSON", 
    "VANBUREN", 
    "HARRISON", 
    "TYLER", 
    "POLK", 
    "TAYLOR", 
    "FILLMORE", 
    "PIERCE", 
    "BUCHANAN", 
    "LINCOLN", 
    "JOHNSON", 
    "GRANT", 
    "HAYES", 
    "GARFIELD", 
    "ARTHUR", 
    "CLEVELAND", 
    "HARRISON", 
    "MCKINLEY", 
    "ROOSEVELT", 
    "TAFT", 
    "WILSON", 
    "HARDING", 
    "COOLIDGE", 
    "HOOVER", 
    "TRUMAN", 
    "EISENHOWER", 
    "KENNEDY", 
    "NIXON", 
    "FORD", 
    "CARTER", 
    "REAGAN", 
    "BUSH", 
    "CLINTON", 
    "OBAMA" 
], 

    wrongAllowed: 7, 
    goodLetters: 0, 
    wordArray: [], 
    badArray: [], 
    wins: 0, 

//functions========================================================= 
    startGame: function() { 
    var word = hangmanGame.presidents[Math.floor(Math.random() * hangmanGame.presidents.length)]; 
    }, 
} 

    function write() { 
    console.log("President" + word); 
    } 


//main process=============================== 
    document.onkeyup = function(event) { 
    var userGuess = String.fromCharCode(event.keyCode).toUpperCase(); 
    } 

    if (userGuess == 'A'){ 
     write(); 
    } 
+0

哇。格式化抱歉。这是我的第一个帖子。我认为我在发布之前缩进了这一切。我不确定它的第一部分是否在代码框外? – JenPem

+0

我不能从你的缩进中得知,但它看起来像你的'hangmanGame'对象没有完全关闭 –

+1

你只定义了userGuess作为局部变量,所以它在这段代码之外是不可见的document.onkeyup = function(事件){}。通过简单地将userGuess添加为全局变量,您将解决问题。希望这可以帮助。 – acac97

回答

3

改成这样

// Main process 
document.onkeyup = function(event) { 
    var userGuess = String.fromCharCode(event.keyCode).toUpperCase(); 
    if (userGuess === 'A') { 
    write(); 
    } 
} 
+0

或者执行此操作xDDD – acac97

+0

在write()调用时定义了哪个单词? – guest271314

+0

@ guest271314'window.hangmanGame.startGame()',如果OP会在方法中返回该变量 –

0

包括if语句中keyup事件处理程序;从handman.startGame功能returnword变量,传递到word功能write

//Variables=============================================================== 
 
var hangmanGame = { 
 
    presidents: [ 
 
    "WASHINGTON", 
 
    "ADAMS", 
 
    "JEFFERSON", 
 
    "MADISON", 
 
    "MONROE", 
 
    "JACKSON", 
 
    "VANBUREN", 
 
    "HARRISON", 
 
    "TYLER", 
 
    "POLK", 
 
    "TAYLOR", 
 
    "FILLMORE", 
 
    "PIERCE", 
 
    "BUCHANAN", 
 
    "LINCOLN", 
 
    "JOHNSON", 
 
    "GRANT", 
 
    "HAYES", 
 
    "GARFIELD", 
 
    "ARTHUR", 
 
    "CLEVELAND", 
 
    "HARRISON", 
 
    "MCKINLEY", 
 
    "ROOSEVELT", 
 
    "TAFT", 
 
    "WILSON", 
 
    "HARDING", 
 
    "COOLIDGE", 
 
    "HOOVER", 
 
    "TRUMAN", 
 
    "EISENHOWER", 
 
    "KENNEDY", 
 
    "NIXON", 
 
    "FORD", 
 
    "CARTER", 
 
    "REAGAN", 
 
    "BUSH", 
 
    "CLINTON", 
 
    "OBAMA" 
 
    ], 
 

 
    wrongAllowed: 7, 
 
    goodLetters: 0, 
 
    wordArray: [], 
 
    badArray: [], 
 
    wins: 0, 
 

 
    //functions========================================================= 
 
    startGame: function() { 
 
    var word = hangmanGame.presidents[Math.floor(Math.random() * hangmanGame.presidents.length)]; 
 
    return word 
 
    } 
 
} 
 

 
function write(word) { 
 
    console.log("President " + word); 
 
} 
 

 

 
//main process=============================== 
 
var hangman = hangmanGame.startGame(); 
 

 

 
document.onkeyup = function(event) { 
 
    var userGuess = String.fromCharCode(event.keyCode).toUpperCase(); 
 
    if (userGuess == 'A') { 
 
    write(hangman); 
 

 
    } 
 
}