2017-01-03 62 views
1

我必须按照视频中的说明制作测验应用程序。我遵循指示并制作应用程序。几乎一切正常,但在测验结束时我没有得分。 Web控制台显示的代码(用粗体字16行)的以下部分类型错误:TypeError:q未定义(在JS中)

var currentQuestion = 0; 
var score = 0; 
var totQuestions = questions.length; 

var container = document.getElementById('quizContainer'); 
var questionEl = document.getElementById('question'); 
var opt1 = document.getElementById('opt1'); 
var opt2 = document.getElementById('opt2'); 
var opt3 = document.getElementById('opt3'); 
var opt4 = document.getElementById('opt4'); 
var nextButton = document.getElementById('nextButton'); 
var resultCont = document.getElementById('result'); 

function loadQuestion (questionIndex) { 
var q = questions[questionIndex]; 
**questionEl.textContent = (questionIndex + 1) + '. ' + q.question;** 
opt1.textContent = q.option1; 
opt2.textContent = q.option2; 
opt3.textContent = q.option3; 
opt4.textContent = q.option4; 

}; 
function loadNextQuestion() { 
var selectedOption = document.querySelector('input[type=radio]:checked'); 
if(!selectedOption){ 
    alert('Please select your answer!'); 
    return; 
} 
var answer = selectedOption.value; 
if(questions[currentQuestion].answer ==answer){ 
    score += 10; 
} 
selectedOption.checked = false; 
currentQuestion++; 
if(currentQuestion == totQuestions - 1){ 
    nextButton.textContent = 'Finish'; 
} 
if(currentQuestion == totQuestions){ 
    container.style.display = 'none'; 
    resultCont.style.display = ''; 
    resultCont.textContent = 'Your score: ' + score; 
} 
loadQuestion(currentQuestion); 
} 
loadQuestion(currentQuestion); 

任何人都可以请指出错误? 这里是其中问题定义的文件:

var questions = [{ 
"question": "Why do we use the present simple tense?", 
"option1": "General truths and facts", 
"option2": "Complete action", 
"option3": "Continuous action", 
"option4": "Continuous action linked with past", 
"answer": "1" 
}, { 
"question": "Why do we use the present continuous tense?", 
"option1": "General truths and facts", 
"option2": "Complete action", 
"option3": "Continuous action", 
"option4": "Continuous action linked with past", 
"answer": "3" 
}, { 
"question": "Why do we use the present perfect tense?", 
"option1": "General truths and facts", 
"option2": "Complete action", 
"option3": "Continuous action", 
"option4": "Continuous action linked with past", 
"answer": "2" 
}, { 
"question": "Why do we use the present perfect continuous tense?", 
"option1": "General truths and facts", 
"option2": "Complete action", 
"option3": "Continuous action", 
"option4": "Continuous action linked with past", 
"answer": "4" 
}] 
+0

什么是“问题”,它来自哪里? – Craicerjack

+1

什么是“问题”?你传递给函数的是什么? – Li357

+0

@Craicerjack我只发布了代码的错误部分,以避免我的问题被搁置或关闭。我应该发布整个代码吗? –

回答

0

正如意见,JS说,做var myvar = some.thing并不能保证你在myvar有一个值。

如果some变量不包含thing属性,然后some.thingundefined,所以会myvar

简单演示here(使用左下方的控制台按钮)。最后一行会在您的浏览器控制台中抛出一个错误,导致您无法执行undefined.someProperty