Javascript document.formname.checkbox[0]。与document.getElementById('checkbox')相比已选中。已选中

Javascript document.formname.checkbox[0]。与document.getElementById('checkbox')相比已选中。已选中,javascript,checkbox,Javascript,Checkbox,在Javascript中,我通常使用syntaxdocument.formname.checkbox[0]。选中,但我注意到几乎所有其他人都使用document.getElementById'checkboxid'。选中。如果这是一个愚蠢的问题,我深表歉意,但我正试图找出我首选的语法是否已被弃用,或者其他人是否只是使用了更方便的语法?首选getElementById。考虑一个网页,内容如下: 您只需使用console.logx就可以在javascript中访问div x 现在考虑如果在全局上下文

在Javascript中,我通常使用syntaxdocument.formname.checkbox[0]。选中,但我注意到几乎所有其他人都使用document.getElementById'checkboxid'。选中。如果这是一个愚蠢的问题,我深表歉意,但我正试图找出我首选的语法是否已被弃用,或者其他人是否只是使用了更方便的语法?

首选getElementById。考虑一个网页,内容如下:

您只需使用console.logx就可以在javascript中访问div x

现在考虑如果在全局上下文中定义了var x=5。现在,在div的值只有5之前,不能使用x来访问它

首选getElementById,因为您不可能用其他变量覆盖选择器。

document.formname.checkbox[0]。选中可能并不适用于所有浏览器。document.forms[0]。elements和document.formName与document.getElementById一样是标准化的,这两种名称的含义是:

document.formname.checkbox[0]。已选中 这将使用表单和元素的name=属性来选择所需的元素。这很好,因为有时候您不想到处都用ID弄脏标记,而且您更喜欢使用名称,这是大多数表单都有的,因为默认提交使用名称作为键

这样做的潜在问题是它有点冗长,可能不太可读

document.getElementById'checkboxId'。已选中 这样做很简单,只需插入一个ID并获取正确的元素,但要获取表单中的任何元素,它还必须具有一个ID,这可能会非常烦人

document.querySelectorAll'myForm输入[type=checkbox]'[0]。已选中 这里有一个替代解决方案,它使用CSS选择器和document.QuerySelector。我觉得它更具可读性,特别是对于那些比JavaScript更精通CSS的人来说

哪一个更好?取决于您的特定用例和偏好。我喜欢使用querySelector和querySelectorAll,尤其是在变量中已经有表单DOM对象的情况下:

myForm.querySelector('input[type=checkbox]').checked;

这取决于您。

我看到描述document.forms集合的。我没有看到任何关于直接在文档对象本身上获取表单的内容,但这并不意味着它不存在。我会坚持使用规范中的内容。@squint–表单一直作为文档对象的命名属性提供,HTML5不会反对它。请看@RobG:我仍然会遵守规范,但这是我的意见。如果它一开始不在规范中,我认为他们不需要反对它。@斜视它在规范中,添加了注释链接。@PHPglue他没有要求将其作为全局变量访问。他是从文档对象开始的,因此与局部变量没有冲突。@斜视啊,好吧,公平地说,如果您担心全局变量和对象之间的冲突,我的回答仍然是正确的。keysdocumentTrue。我的意思是Object.keysdocument可能不常见,但通常我不喜欢使用节点作为集合。文档上有很多其他属性可能会发生冲突。如果它不起作用,则浏览器不符合HTML5甚至HTML4。请显示document.formName.checkbox数组类对象的文档。