Javascript 使用document.getElementsByName()不是';不行吗?
第二个警报命令的代码按预期工作(显示元素“to”的值),但第一个警报命令不工作(它应该做同样的事情)。这是为什么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
<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()
,等等。