简体   繁体   English

两个相同的 javascript 代码以不同的方式表现(在不同的浏览器中)

[英]Two same javascript code behaving in different way(In different browser)

i have a form with name frmOrderReschedule and an hidden element frmOrderReschedule .我有一个名为frmOrderReschedule和一个隐藏元素frmOrderReschedule的表单。 i tried to access it in this way-我试图以这种方式访问它-

document.frmOrderReschedule.newSalesOrderNumber.length

it gave me error document.frmOrderReschedule.newSalesOrderNumber.length is undefined , but when i try in fallowing way it works properly它给了我错误 document.frmOrderReschedule.newSalesOrderNumber.length is undefined ,但是当我尝试休闲方式时它可以正常工作

document.getElementsByName('newSalesOrderNumber').length;  

this is happening in Mozila only.Any one can throw some light on it, why it's happenning like this.这仅在 Mozilla 中发生。任何人都可以对此有所了解,为什么会这样。 Thanks in Advance!!!提前致谢!!!

Following your comment I deduct, that the field can be present one or multiple times.根据您的评论,我推断该字段可以出现一次或多次。 In that case document.frmOrderReschedule.newSalesOrderNumber (or document.forms["frmOrderReschedule"].elements["newSalesOrderNumber"] ) can return different types.在这种情况下document.frmOrderReschedule.newSalesOrderNumber (或document.forms["frmOrderReschedule"].elements["newSalesOrderNumber"] )可以返回不同的类型。

If there are multiple controls, it will return a collection, which will have a length property.如果有多个控件,它将返回一个集合,该集合将具有一个length属性。 If there is only one control, then it will return a direct reference to that control, which - obviously - doesn't have a length.如果只有一个控件,那么它将返回对该控件的直接引用,显然该控件没有长度。 That means, if you use that syntax you need to distinguish between the two variants (or even three variant, in case the field isn't there):这意味着,如果您使用该语法,则需要区分两个变体(甚至三个变体,以防该字段不存在):

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");
}

Working example: http://jsfiddle.net/H4Lks/1/工作示例: http://jsfiddle.net/H4Lks/1/

document.getElementsByName('newSalesOrderNumber') on the other hand always returns a collection, even if there are none or one, so it always has a length .另一方面, document.getElementsByName('newSalesOrderNumber')总是返回一个集合,即使没有集合或一个集合,所以它总是有一个length

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM