这是我正在制作的一些测验的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;
}
答案 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)
}