我有一个名为frmOrderReschedule
的表单和一个隐藏元素frmOrderReschedule
。
我试图以这种方式访问它 -
document.frmOrderReschedule.newSalesOrderNumber.length
它给了我错误document.frmOrderReschedule.newSalesOrderNumber.length是undefined
,但是当我尝试以fallowing的方式它正常工作
document.getElementsByName('newSalesOrderNumber').length;
这种情况只发生在Mozila。任何人都可以对此有所了解,为什么会发生这样的事情。 在此先感谢!!!
答案 0 :(得分:3)
根据您的评论我推断,该字段可以出现一次或多次。在这种情况下,document.frmOrderReschedule.newSalesOrderNumber
(或document.forms["frmOrderReschedule"].elements["newSalesOrderNumber"]
)可以返回不同的类型。
如果有多个控件,它将返回一个集合,该集合将具有length
属性。如果只有一个控件,那么它将返回对该控件的直接引用,这显然没有长度。这意味着,如果您使用该语法,则需要区分这两种变体(或者甚至是三种变体,以防该字段不存在):
var x = document.forms["frmOrderReschedule"].elements["newSalesOrderNumber"];
if (x) {
if (x.length) {
alert("There are " + x.length + " controls.")
} else {
alert("One control with value: " + x.value);
}
} else {
alert("None");
}
工作示例:http://jsfiddle.net/H4Lks/1/
另一方面, document.getElementsByName('newSalesOrderNumber')
始终会返回一个集合,即使没有集合,也不会有集合,因此它总是有length
。