Javascript 新手到忍者无法让书籍代码工作
javascript novice to ninja can't get book code to work
我从SitePoint购买了一本电子书,看起来很合法,但是当我(逐章)学习代码时,我在8章后陷入困境。 到目前为止,代码已按规定工作,但是我已经删除并重新设计了此代码四次,并且我一生都无法找出提交框被表单替换的最后更改中发生了什么。
相关 codehttp://codepen.io/anon/pen/RNezjb 的码笔
//dom references//
var $question = document.getElementById("question");
var $score = document.getElementById("score");
var $feedback = document.getElementById("feedback");
var $start = document.getElementById("start");
var $form = document.getElementById("answerswer");
//view functio{ns
function update(element, content, klass) {
var p = element.firstChild || document.createElement("p");
p.textContent = content;
element.appendChild(p);
if(klass) {
p.className = klass;
}
}
quiz = {
"name":"Super Hero Name Quiz",
"description":"How many super heroes can you name?",
"question":"What is the real name of ",
"questions": [
{ "question": "Superman", "answerswer":"Clark Kent" },
{ "question": "Wonder Woman", "answerswer": "Diana Prince" },
{ "question": "Batman", "answerswer": "Bruce Wayne"}
]
};
//Event Listeners
$start.addEventListener("click", function () {
play(quiz);
}, false);
function hide(element) {
element.style.display = "none";
}
function show(element) {
element.style.display = "block";
}
//play(quiz);
hide($form);
function play(quiz) {
//hide button and show form
hide($start);
show($form);
$form.addEventListener('submit', function(event) {
event.preventDefault();
check($form[0].value);
}, false);
var score = 0; //initialize score
update($score, score);
//main game loop
var i = 0;
chooseQuestion();
function chooseQuestion() {
var question = quiz.questions[i].question;
ask(question);
}
//end of main game loop
gameOver();
function ask(question) {
update($question,quiz.question + question);
$form[0].value = "";
$form[0].focus();
}
function check(answer) {
if(answer ===quiz.questions[i].answer) {
update($feedback,"Correct!","right");
score++;
update($score,score);
}
else {
update($feedback,"Wrong!","wrong");
}
i++;
if(i === quiz.questions.length) {
gameOver();
}
else {
chooseQuestion();
}
}
function gameOver() {
update($question,"Game Over, you scored " + score + " points");
hide($form);
show($start);
}
}
我已经在论坛上寻找了可能对这本书代码有问题的其他任何人,但似乎这本书可能太新了(Javascript:新手到忍者是大部头),人们没有类似的问题。 我已经在书中发现了一些印刷错误,但我有一种感觉,我的代码中有一些错误。
任何帮助将不胜感激。 我也无法在控制台中弹出任何错误。
谢谢
没
关系,我实际上找到了我调用了两次gameOver()的地方,一旦我将其添加到checkAnswer函数,就必须删除第一个实例。
谢谢
相关文章:
- 为什么我需要在setTimeout中有匿名函数才能使此代码工作
- ajax代码工作时,使用javascript禁用html中的链接
- Javascript 新手到忍者无法让书籍代码工作
- 设计代码工作流程
- 在 Java 脚本中使用追加时 HTML 标记不起作用,但在执行硬编码时 html 代码工作正常
- 如何使以下 JavaScript 代码工作并生成 ID 为 “myDivId” 的元素内的名称和年龄列表:
- 函数停止代码工作
- 如何使替换代码工作
- 我无法让这个高图表代码工作,有谁知道为什么它不起作用
- 代码工作 jsfiddle 不适用于 dreamweaver
- jQuery Keyup 不能从代码工作,而是从 Chrome.console 工作
- Web服务器代码工作不正常
- 求和代码工作不正常
- 启用JS评测时,JavaScript代码工作得更快?什么
- 为什么获胜't这个极其简单的Javascript代码工作
- 我的Javascript代码工作不正常
- js代码工作是JSfiddle,但不是在我的浏览器
- 我有反应标签代码工作完美,但我需要改变html结构
- JQuery登录如果语句代码工作不正常则注销
- 我如何使这段代码工作自定义'Facebook Like Box'