JavaScript问题:getElementsByName()不';我不工作

JavaScript问题:getElementsByName()不';我不工作,javascript,Javascript,仅尝试提醒电话字段中输入的值,但它会提醒未定义的值: <script type="text/javascript"> function foo() { alert(document.getElementsByName("phone").value); return false; } </script> <form action="foo.php" method="post" onsubmit="return foo()"> <l

仅尝试提醒电话字段中输入的值,但它会提醒未定义的值:

<script type="text/javascript">

function foo() {
   alert(document.getElementsByName("phone").value);
   return false;
}

</script>

<form action="foo.php" method="post" onsubmit="return foo()">
    <label>Name:</label>
    <input type="text" name="name" />
    <label>Phone:</label>
    <input type="text" name="phone" />
    <label>Email:</label>
    <input type="text" name="email" />
    <label>Message:</label>
    <textarea name="message"></textarea>
    <input type="submit" value="Submit" name="submit" />
</form>

函数foo(){
警报(document.getElementsByName(“电话”).value);
返回false;
}
姓名:
电话:
电邮:
信息:

如何让它工作?此外,我还了解到所有主要浏览器都支持getElementsByName,是这样吗?

您得到的是元素的集合,而不是一个元素

   alert(document.getElementsByName("phone")[0].value);

元素需要有一个id才能正常工作。比如说

  <input type="text" id="phone">Phone:</input>
getElementsByName(…)返回DOM元素的集合

你试过这个吗

document.getElementsByName("phone")[0].value
根据代码片段,您可能希望使用ID,而不是仅使用名称。那样的话,你可以打电话给

... HTML ...
<input type="text" id="phone" />

... Javascript ...
document.getElementById("phone").value
。。。HTML。。。
... Javascript。。。
document.getElementById(“电话”).value

。。。检索所需的元素。

方法不是get*Elements*ByName。它返回数组中的多个元素

您需要的是
document.getElementsByName(“电话”)[0]。value

我建议使用ID,而不是名字


然后你可以做
document.getElementByID(“电话”).value

啊,很好,不知道它返回了一个数组。我知道get-element by-id,但如果不需要的话,我宁愿保持不阻塞标记(我的表单总是有用于服务器端处理的名称),除非get-element by-id的性能明显更好,不是吗?它实际上不是数组,而是一个活动节点列表(或某些浏览器中的HTMLCollection)@Brandon-检查此网站:。在我的机器上(Mac+Chrome),getElementById实际上比getElementsByName慢3毫秒。仅供参考@杜里-你说得对。它返回一个集合,而不是数组。谢谢你指出这一点。你正在登录哪个浏览器?@sv_-in只需要它在最新版本的ff、opera、safari、chrome和ie6以及更高版本中工作。
... HTML ...
<input type="text" id="phone" />

... Javascript ...
document.getElementById("phone").value