关于javascript和DOM,这符合标准吗? document.form1.sel1//按名称属性访问元素,这是标准吗?

关于javascript和DOM,这符合标准吗? document.form1.sel1//按名称属性访问元素,这是标准吗?,javascript,dom,Javascript,Dom,正确的语法是: <form name='form1'> <select name='sel1'></select> </form> <script> document.form1.sel1 ... //access element by it's name attribute, is this standard? </script> 或 正确的语法是: <form name='form1'>

正确的语法是:

<form name='form1'> <select name='sel1'></select> </form> <script> document.form1.sel1 ... //access element by it's name attribute, is this standard? </script> 或

正确的语法是:

<form name='form1'> <select name='sel1'></select> </form> <script> document.form1.sel1 ... //access element by it's name attribute, is this standard? </script> 或


为什么不
document.getElementsByName('sel1')


同一文档中可能有其他同名元素(例如,包含类似控件集的多个表单)–David Dorward 31分钟前


这就是为什么我总是使用
id
而不是
name
。我建议使用
表单
数组或为元素分配
id
,以便于检索。

为什么不
文档。getElementsByName('sel1')


同一文档中可能有其他同名元素(例如,包含类似控件集的多个表单)–David Dorward 31分钟前


这就是为什么我总是使用
id
而不是
name
。我建议使用
表单
数组或为元素分配
id
,以便于检索。

否,没有指定HTMLDocument将命名表单作为直接属性,也没有指定HTMLFormElement将命名元素作为直接属性

然而,这种行为确实可以追溯到最早的JavaScript实现(在Netscape 2中),并从那时起被每个浏览器复制,因此它是“DOM级别0”特性之一,尽管没有任何标准机构正式认可,但它肯定是事实上的标准

我仍然不建议使用它,因为未来的浏览器可能会在HTMLDocument和HTMLFormElement上引入新属性(就像浏览器过去经常做的那样,尤其是在HTMLDocument上),它们的名称可能会与您的
名称
属性冲突。这在
document.forms
form.elements
属性使用的HTMLCollection对象上发生的可能性要小得多


更好的方法是将
id
放在您想要引用的任何内容上,将
名称
关闭
并使用明确的
文档。getElementById()

不,没有规定HTMLDocument将获得命名表单作为直接属性,HTMLFormElement也不会获得命名元素作为直接属性

然而,这种行为确实可以追溯到最早的JavaScript实现(在Netscape 2中),并从那时起被每个浏览器复制,因此它是“DOM级别0”特性之一,尽管没有任何标准机构正式认可,但它肯定是事实上的标准

我仍然不建议使用它,因为未来的浏览器可能会在HTMLDocument和HTMLFormElement上引入新属性(就像浏览器过去经常做的那样,尤其是在HTMLDocument上),它们的名称可能会与您的
名称
属性冲突。这在
document.forms
form.elements
属性使用的HTMLCollection对象上发生的可能性要小得多


更好的方法是将
id
放在您想要引用的任何东西上,将
名称
关闭
并使用明确的
文档。getElementById()

我认为您应该更好地设置代码格式并编写有效代码:使用<和>我认为您应该更好地设置代码格式并编写有效代码:使用<和>如果不使用名称,同一文档中可能有其他同名元素(例如,包含类似控件集的多个表单),然后,您可以在不同的表单之间重用JS,只需切换到不同的表单对象即可。:)同一文档中可能有其他同名元素(例如,包含类似控件集的多个表单),如果您去掉了名称,则可以在不同表单之间重用JS,只需切换到不同的表单对象即可。:)
document.forms["form1"].elements["sel1"]