JS函数循环按预期加倍

JS function looping double as expected

这是 Javascript 我正在做的一些测验的代码。 在我的例子中 table.length = 2,并且函数在第一个 table 和第二个参数中重复 2 次。

但是为什么命令在控制台中显示了 4 次?

console.log("Hello");

.

function start(){
    var brojac =0;
    var table = document.getElementsByTagName("table");
    for (i =0; i<table.length ; i++){
        jednoPitanje(i);
        brojac += parseInt(jednoPitanje(i))

    }
    console.log("Sakupili ste ukupno " + brojac + " bodova");
}

function jednoPitanje(x) {
    var odgovori ="";
    var table = document.getElementsByTagName("table");
    var tableN = table[x];
    var input = tableN.getElementsByTagName("input")
    var brojInputa = tableN.getElementsByTagName("input").length;

    //Uzima bodove,kategoriju i index tocnih odgovora
    var bodovi =tableN.classList[2];
    var kategorija =tableN.classList[1];
    var tocni = tableN.classList[0];

    console.log("Hello");

    //Iteracija kroz sve checkboxsove u tablici
    for (j =0; j<brojInputa ; j++){
        if(input[j].checked==true){
            odgovori += tableN.getElementsByTagName("input")[j].value;
        }
    }
    if(odgovori == tocni){      
    }
    else{bodovi = 0;}

    return bodovi;
}

您正在函数 jednoPitanje() 中调用 console.log("Hello");。您在循环中调用此函数两次:

 jednoPitanje(i);  // <-- this cause console.log() to run
 brojac += parseInt(jednoPitanje(i)) // <-- this also causes the console.log()

并且因为你的循环 运行s 两次它打印四次。

目前尚不清楚您是否需要 两次 运行 函数,但如果不需要,您可以删除第一个调用:

for (i =0; i<table.length ; i++){
    brojac += parseInt(jednoPitanje(i))
}

或者如果您更喜欢清晰度:

for (i =0; i<table.length ; i++){
    var bodovi = jednoPitanje(i);
    brojac += parseInt(bodovi)
}