好的,所以我认为我的代码的问题是有关实际的html页面,我正在激活的代码,但我不能确定。我要做的是通过数组问两个问题。我希望第二题显示的是"gerp"而不是" correct ",如果第二题你答错了,它就会提示你答错了。
这是我在页面上使用的"谜语"的开头:
<button onclick="myFunction()">Click Me</button>
<p id="demo"></p>
这是我在js文件中使用的代码,这是单独的HTML文件(对不起,如果我听起来很傻,我只是想要具体):
var i = 0;
var myArray = [{
q: "What was her favorite Color?",
a: "purple" }, {
q: "gymhoaccetpptfe",
a: "rev six nine eleven"}];
function myFunction() {
var x;
var name = prompt(myArray[i].q);
if (name == myArray[i].a) {
x = document.getElementById("demo").innerHTML + " " + "Correct!" + " " + "Listen!"
+ " " +
"http://www.npr.org/2010/02/12/123534818/carl-sagan-and-ann-druyans-ultimate-mix-tape"
;
i= i + 1 ;
document.getElementById("demo").innerHTML = x;
} else if ((name == myArray[i + 1].a)) {
x = document.getElementById("demo").innerHTML + " " + "gerp!";
document.getElementById("demo").innerHTML = x;
} else {
x = document.getElementById("demo").innerHTML + name + " " + "is" + " " + "wrong!";
document.getElementById("demo").innerHTML = x;
}
}
我只想在第二个问题正确回答时显示"Gerp"。
这是因为在第一个if中,您检查的是i=i+1
,但在第二个if中,对于gerp,您检查的是i + 1,也就是2,第三个元素。除非您需要它是动态的,否则只需使用相应的索引:
... else if(name == myArray[1].a) { ...
你应该真的考虑修复你的格式和清理你的代码。这样看起来会更好看,错误也会更容易发现:
var questions = [{
question: 'What was her favorite Color?',
answer: 'purple',
message: 'Correct! Listen: http://www.npr.org/2010/02/12/123534818/carl-sagan-and-ann-druyans-ultimate-mix-tape'
}, {
question: 'gymhoaccetpptfe',
answer: 'rev six nine eleven',
message: 'gerp!'
}];
function add_message(text) {
var element = document.createElement('div');
var demo = document.getElementById('demo');
element.innerHTML = text;
demo.appendChild(element);
}
function ask_questions(questions) {
for (var i = 0; i < questions.length; ) {
var question = questions[i];
var response = prompt(question.question);
if (response == question.answer) {
add_message(question.message);
i++;
} else {
add_message('"' + response + '" is wrong!');
}
}
}
function start_riddles() {
ask_questions(questions);
}