2017-10-13 6 views
0

これは私が作っているクイズのJavascriptコードです。 私の場合、table.length = 2であり、関数は最初のテーブルと2番目のパラメータで2回繰り返されます。JS関数は二重にループします。

しかし、なぜコマンドはコンソールで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

私はあなたについてよくわかりませんが、私にとっては、コードが適切にインデントされているときに役立ちます。 – trincot

答えて

3

あなたは機能jednoPitanje()console.log("Hello");を呼んでいます。ループ内でこの関数を2回呼び出します。

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

ループが2回実行されるので、4回印刷されます。

場合、それはすぐに明らかではありませんあなた二回実行するように機能しますが、そうでない場合は、あなただけの最初の呼び出し削除することができます必要

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

これはまさに私が必要なものです!タンク –

関連する問題