JS函数循环加倍如预期

时间:2017-10-13 18:56:31

标签: javascript function for-loop console.log

这是我正在制作的一些测验的Javascript代码。 在我的情况下,table.length = 2,函数重复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;
}

1 个答案:

答案 0 :(得分:3)

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

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

由于你的循环运行两次,它会打印四次。

如果您需要该功能运行两次,目前尚不清楚,但如果不这样做,您可以删除第一个电话:

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)
}