您好我在尝试创建此循环时处于黑屏模式 代码是这样的:
function finished() {
var summaryDiv = document.createElement("DIV");
summaryDiv.setAttribute("id","summary");
document.getElementById("main_content").appendChild(summaryDiv);
var summaryLabel = document.createElement("P");
summaryLabel.setAttribute("id","score");
document.getElementById("summary").appendChild(summaryLabel);
var radios = document.getElementsByTagName('input');
var value = 0;
for (var i = 0; i < radios.length; i++) {
if (radios[i].type === 'radio' && radios[i].checked && radios[i].value == "true") {
value += 1;
console.log(value);
} else {
console.log(value);
}
document.getElementsByClassName("qcontainer")[i].style.display = "none";
document.getElementById("score").innerHTML = value;
}
}
// radios.length的值是36,看起来它只需要前16个单选按钮的值,如果另外8个单选按钮的值为TRUE则无关紧要它始终只返回前16个单选按钮的TRUE按钮,我知道它可能有点令人困惑,但我不知道这个循环有什么问题。
答案 0 :(得分:1)
official documentation返回实时HtmlCollection
。这意味着当您从DOM中删除元素时,可以通过removeChild
或通过设置父级的innerHTML
来更新集合。
像这样循环实时HtmlCollection
的一种可能方法是在集合的.length
上执行一段时间。
while (radios.length) {
// Use radios[0]
// Remove radios[0] from DOM
}