Javascript 全局变量不递增
大部分操作都在函数Javascript 全局变量不递增,javascript,addeventlistener,Javascript,Addeventlistener,大部分操作都在函数next中。其他函数是为上下文提供的。当选择正确答案时,全局变量tally将按其应增加的值递增。然而,变量nr并没有递增,我也不知道它是不是递增的 您可以看到,我注释掉了next函数返回了一个带有tally和nr的对象,并在事件侦听器中分配了这些值。当我这样做的时候,它成功了。但它也应该以另一种方式工作,对吗 var nr = 0; var tally = 0; function onLoadEvent(nr) { //alert('onload'); var
next
中。其他函数是为上下文提供的。当选择正确答案时,全局变量tally
将按其应增加的值递增。然而,变量nr
并没有递增,我也不知道它是不是递增的
您可以看到,我注释掉了next
函数返回了一个带有tally
和nr
的对象,并在事件侦听器中分配了这些值。当我这样做的时候,它成功了。但它也应该以另一种方式工作,对吗
var nr = 0;
var tally = 0;
function onLoadEvent(nr) {
//alert('onload');
var quiz = document.getElementById('quiz');
var question = allQuestions[nr];
var next = quiz.lastElementChild;
var qHeader = "<h2>" + question.question + "</h2>";
var q = "";
for(var i=0;i<question.choices.length;i++){
q = q + '<p><label for="a' + i + '">' +
'<input type="radio" id="a' + i + '" name="q" value="' +
i + '">' + question.choices[i] + '</label></p>';
}
quiz.innerHTML = qHeader + q + next.outerHTML;
//next = document.getElementById('next');
}
function getChecked(){
var radios = document.getElementsByName('q');
var radio;
for(var i=0;i<radios.length;i++){
if(radios[i].checked){
radio = radios[i];
break;
}
}
return radio;
}
function next(nr){
if (getChecked() !== undefined) {
var answer = getChecked();
if(answer.value == allQuestions[nr].correctAnswer){
tally = tally + 1;
}
nr = nr + 1;
if (nr>=allQuestions.length){
alert("You got " + tally + " points!");
} else {
onLoadEvent(nr);
}
} else {
alert('You need to check a radio button');
}
//return {nr: nr, tally: tally};
}
var form = document.getElementById('quiz');
form.addEventListener('click', function(event){
if(event.target.id === 'next'){
next(nr);
//nr = obj.nr;
//tally = obj.tally;
} else if(event.target.id === 'prev'){}
}, false);
window.addEventListener('load', function(event){onLoadEvent(nr);}, false);
var nr=0;
var=0;
函数onLoadEvent(nr){
//警报(“加载”);
var quick=document.getElementById('quick');
var问题=所有问题[nr];
var next=quick.lastElementChild;
var qHeader=“”+问题。问题+”;
var q=“”;
对于(var i=0;i您正在接受具有相同名称的参数nr
,该参数隐藏全局范围nr
问题的解决方案是删除nr
作为参数。因此,请使用函数onLoadEvent()
而不是函数onLoadEvent(nr)
您正在接受同名参数nr
,它隐藏了全局作用域nr
。您的问题的解决方案是删除nr
作为参数。因此,请使用函数onLoadEvent()
而不是函数onLoadEvent(nr)
谢谢!添加这一点作为答案,我会给您评分。