【发布时间】:2011-12-04 04:57:42
【问题描述】:
document.getElementsByName('name').value 返回undefined。我不知道为什么会这样。
我正确地包含了 .js 文件,Firebug 在我的代码中没有发现任何错误,并且代码在第一行或第二行内失败,因为每次我调用上述函数时,它都会返回 undefined。这让我完全糊涂了。
这是我包含文件的方式:
<script type="text/javascript" src="new.js"></script>
这是到达函数调用返回的第一个未定义值所需的所有代码:
function myfunction() {
var myvar = document.getElementsByName('myElement').value;
...那时我得到未定义的变量。我用来触发脚本的按钮使用如下代码:
<button type="button" onclick="myfunction()">MyButton</button>
- 我所使用的按钮类型是否影响脚本可用的信息?
- 如何找出
document.getElementsByName()返回undefined的原因? - Javascript
document对象对于从另一个文件导入的脚本是否存在任何范围问题?
抱歉,这是一个愚蠢的问题。我对 Javascript 很陌生。
编辑:感谢 Mike Samuel 的回答。这就像一个魅力一样固定它,我想知道为什么我以前不知道这个?我应该尽可能多地看到 getElementsByName() 表明返回的值不止一个......
【问题讨论】:
-
document.getElementByName不是跨浏览器,所以是的,它可能会返回奇怪的值或根本没有返回值。分配 ID 或通过标签名称获取元素可能会更容易。 -
@Lime - 没有“getElementByName”,您寻求的方法是 getElementsByName,每个支持 DOM 1 的浏览器都有(自 Navigator 2 以来几乎所有浏览器都有) .
-
@RobG 拼写错误 =) 无论如何,IE 9 仍然没有得到
getElementsByNamecorrect。我绝对不会称这种古怪的行为跨浏览器。如果没有更多关于document.getElementsByName("myElement")的上下文,他可能会遇到浏览器错误。 -
下面列出的所有三个函数都在 W3C dom1 标准中。
-
@Lime - 如果你坚持 HTML 标准(即 HTML 4.01)并且只在指定有名称的元素上使用名称(其中有 14 个),并且没有名称在某些与其他元素的id相同的元素上,则它是可靠的。如果您希望浏览器支持 HTML5 的功能,这不是标准(它是工作草案)并且没有被任何浏览器完全实现,那么您将遇到问题。
标签: javascript scope globals