使用document.getElementsByName()不起作用?

时间:2012-01-13 04:21:56

标签: javascript

第二个警报命令的代码按预期工作(显示元素“to”的值,但是第一个警告命令不起作用(它应该做同样的事情)。为什么会这样?

<html>
<head>
<script type="text/javascript">
function getValue()
  {
  alert(document.getElementsByName("to").value);
  alert(document.forms[0].to.value);  
  }
</script>
</head>
<body>
<form>
<input name="to" type="hidden" value="hoolah" />
<input type="button" onclick="getValue()" value="Get Value!" />
<form/>
</body>
</html>

3 个答案:

答案 0 :(得分:17)

getElementsByName会返回HTMLCollection。您可以访问第一项的值,如下所示:

document.getElementsByName("to").item(0).value

或者像这样:

document.getElementsByName("to")[0].value

更多信息:

答案 1 :(得分:3)

getElementsByName返回具有给定名称的所有元素。这意味着可以有多个。

如果你想得到第一个元素的值:

document.getElementsByName("to")[0].value

答案 2 :(得分:0)

那是因为它将元素放入数组中,请尝试这个例子:

function getValues(objName)
{  
    var arr = new Array();
    arr = document.getElementsByName(objName);

    alert("total objects with name \"textfield\" = \n" + arr.length);

    for(var i = 0; i < arr.length; i++)
    {
        var obj = document.getElementsByName(objName).item(i);
        alert(obj.id + " =  " + obj.value);
    }
}