Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用document.getElementsByName()不是';不行吗?_Javascript - Fatal编程技术网

Javascript 使用document.getElementsByName()不是';不行吗?

Javascript 使用document.getElementsByName()不是';不行吗?,javascript,Javascript,第二个警报命令的代码按预期工作(显示元素“to”的值),但第一个警报命令不工作(它应该做同样的事情)。这是为什么 <html> <head> <script type="text/javascript"> function getValue()   {   alert(document.getElementsByName("to").value); alert(document.forms[0].to.value);     } </script&g

第二个警报命令的代码按预期工作(显示元素“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>

函数getValue()
  {
警报(document.getElementsByName(“to”).value);
警报(document.forms[0].to.value)
  }

getElementsByName
返回一个
HTMLCollection
。您可以像这样访问第一项的值:

document.getElementsByName("to").item(0).value
document.getElementsByName("to")[0].value
或者像这样:

document.getElementsByName("to").item(0).value
document.getElementsByName("to")[0].value
更多信息:


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

如果要获取第一个元素的值:

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

这是因为它将元素放入数组中,请尝试以下示例:

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);
    }
}
函数getValues(objName)
{  
var arr=新数组();
arr=document.getElementsByName(objName);
警报(“名称为\“textfield\”=\n“+arr.length的对象总数”);
对于(变量i=0;i
我没有投反对票,但尽管你的答案很接近,但并不完全正确返回一个
HTMLCollection
,它类似于数组,但不是实际数组。其次,您不应该将
arr
变量初始化为新数组,因为随后您会立即用
.getElementsByName()
返回的值覆盖它(它不会将结果放入数组,而是丢弃数组)。第三,为什么在for循环的每次迭代中都要再次调用
.getElementsByName()
?如果您只想对其进行迭代,那么可以使用
.length
属性和
[]
数组表示法将其视为数组。但是答案中的代码使用了
.item()
方法,它不是数组方法。而实际数组有一系列其他方法,如
.sort()
.join()
,等等。