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)
谢谢!添加这一点作为答案,我会给您评分。