0

我有一个我找不到解决方案的问题。在我的代码中有一个名为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;
} 
4

2 回答 2

0

如果您尝试创建一个输入数组,您需要首先声明 list 并为其分配一个空数组:

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]);
  }
}
于 2012-11-26T13:48:15.210 回答
-1

whatever = document.getElementsByName(name)whatever如果没有找到给定名称的元素,则分配一个空数组。确保您的元素名称正确。

var用关键字声明变量也很好。这可以防止许多令人毛骨悚然的错误。

于 2012-11-26T13:52:01.043 回答