我遇到了一个无法找到解决方案的问题。
在我的代码中有一个名为list
的变量。
变量list
应该使用getElementsByName()
检索输入元素,
但是这个变量在list.length == 0
语句之后是空的(即if
)
结束了。
在下面的代码中,在for
循环的开头,list.length
为零或未定义。
为什么会这样?
功能是:
function chekRadioToAnswer() {
var signAnswers = new Array(0, 0, 0, 0);
var grades = [[0, 5, 10, 15], [15, 12, 10, 5, 0], [0, 5, 10, 15, 20], [0, 0, 20, 30]];
var answers = new Array(0, 0, 0, 0, 0, 0);
for (num = 2; num <= 5; num++) {
if (num == 2) {
list = document.getElementsByName("answer2");
}
if (num == 3) {
list = document.getElementsByName("answer3");
}
if (num == 4) {
list = document.getElementsByName("answer4");
}
if (num == 5) {
list = document.getElementsByName("answer5");
}
for (i = 0; i < list.length; i++) {
if (list[i].checked) {
var value = document.getElementById("hiddenAnswers").getAttribute("value");
document.getElementById("hiddenAnswers").setAttribute("value", (value + grades[num - 2][i]));
break;
}
}
list.length = 0;
}
return false;
}
答案 0 :(得分:0)
如果您正在尝试创建输入数组,则需要首先声明列表并为其分配一个空数组:
var list = [];
然后使用push
添加到数组中:
//If you are going to use getElementsByName, take the first member of the array
var rdo = document.getElementsByName("answer3");
for (var x = 0; x < rdo.length; x++){
if (rdo[x].checked){
list.push(rdo[x]);
}
}
答案 1 :(得分:-1)
whatever = document.getElementsByName(name)
会为whatever
分配一个空数组。确保元素名称正确无误。
最好使用var
关键字声明变量。这可以防止许多怪异的错误。