簡體   English   中英

為什么我的變量在 javascript 中返回 undefined?

[英]Why is my variable returning undefined in javascript?

我是 javascript 新手。 我正在制作一個抽認卡程序。 出於某種原因,盡管將變量 lastPress 定義為全局變量,但 lastPress 似乎返回 undefined。 但是,它不會導致 JSHint 中的錯誤。 這是我的代碼:

 var i = 0; var questions = ["1: Was the human migration caused by an ice age?", "True"]; var answer = [true, true]; var lastPress; document.getElementById("question").innerHTML = questions[i]; function itsTrue() { lastPress = true; } function itsFalse() { lastPress = false; } function getAns() { if (answer[i] == lastPress) { document.getElementById("ans").innerHTML = "You're correct! The answer was " + lastPress; } else { document.getElementById("ans").innerHTML = "We're sorry, but that is not correct. You said " + lastPress + ". The answer was " + answer[i]; } i++; document.getElementById("question").innerHTML = questions[i]; } document.getElementById("true").onclick = function(){itsTrue()}; document.getElementById("true").onclick = function(){getAns()}; document.getElementById("false").onclick = function(){itsFalse()}; document.getElementById("false").onclick = function(){getAns()};
 <!DOCTYPE HTML> <html> <head> <title>Flash cards</title> </head> <body> <p id="question">This is where the question shows up</p> <p id="ans">This is where the result will show up</p> <button type="button" id="true">True</button> <button type="button" id="false">False</button> </body> </html>

如果您想為同一個點擊事件定義多個函數:此外,在第二次按下真假按鈕后,我將增加到 2,因此問題 [2] 未定義

 var i = 0; var questions = ["1: Was the human migration caused by an ice age?", "True"]; var answer = [true, true]; var lastPress; document.getElementById("question").innerHTML = questions[i]; function itsTrue() { console.log('true') lastPress = true; } function itsFalse() { console.log('false'); lastPress = false; } function getAns() { if (answer[i] == lastPress) { document.getElementById("ans").innerHTML = "You're correct! The answer was " + lastPress; } else { document.getElementById("ans").innerHTML = "We're sorry, but that is not correct. You said " + lastPress + ". The answer was " + answer[i]; } i++; console.log(i); document.getElementById("question").innerHTML = questions[i]; } document.getElementById("true").onclick = function(){itsTrue();getAns();}; //document.getElementById("true").onclick = function(){getAns()}; document.getElementById("false").onclick = function(){itsFalse(),getAns();}; // document.getElementById("false").onclick = function(){getAns()};
 <!DOCTYPE HTML> <html> <head> <title>Flash cards</title> </head> <body> <p id="question">This is where the question shows up</p> <p id="ans">This is where the result will show up</p> <button type="button" id="true">True</button> <button type="button" id="false">False</button> </body> </html>

在您的問題中,不清楚返回 undefined 的內容,所以我認為它是您的 HTML 中更新的內容。

您的代碼返回 undefined 因為您每次點擊都會增加i 但是你的數組只有兩個元素長。 您需要處理所有問題都已顯示的事實。 在這里,我只是將變量i重置為 0,但我不確定這是否適用於您的情況。

 var i = 0; var questions = ["1: Was the human migration caused by an ice age?", "2. this is a second question, true or false ? ", "3. did i got you with my last tricky question?"]; var answer = [true, true, false]; var lastPress; document.getElementById("question").innerHTML = questions[i]; function itsTrue() { lastPress = true; } function itsFalse() { lastPress = false; } function getAns() { if (answer[i] == lastPress) { document.getElementById("ans").innerHTML = "You're correct! The answer was " + lastPress; } else { document.getElementById("ans").innerHTML = "We're sorry, but that is not correct. You said " + lastPress + ". The answer was " + answer[i]; } i++; if(i >= questions.length) { i = 0; } document.getElementById("question").innerHTML = questions[i]; } document.getElementById("true").onclick = function(){itsTrue(); getAns() }; document.getElementById("false").onclick = function(){itsFalse(); getAns()};
 <!DOCTYPE HTML> <html> <head> <title>Flash cards</title> </head> <body> <p id="question">This is where the question shows up</p> <p id="ans">This is where the result will show up</p> <button type="button" id="true">True</button> <button type="button" id="false">False</button> </body> </html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM