document.formname.checkbox[0].checked versus document.getElementById('checkbox').checked



在Javascript中,我通常使用语法document.formname.checkbox[0].checked,但我注意到几乎所有其他人都使用document.getElementById('checkboxid').checked。如果这似乎是一个愚蠢的问题,我很抱歉,但我正在努力找出我喜欢的语法是否被弃用,或者其他人只是使用更方便的语法?

每个意思是:

document.formname.checkbox[0].checked

这将使用表单和元素的name=属性来选择所需的元素。这很好,因为有时你不想到处都用ID弄脏标记,而且你更喜欢使用名称,这是大多数表单都有的(因为默认提交使用名称作为键)。

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

document.getElementById('checkboxId').checked

这样做很简单,只需插入一个ID并获得正确的元素,但要获得表单中的任何元素,它还必须有一个ID,这可能很烦人。


document.querySelectorAll('#myForm input[type=checkbox]')[0].checked

这里有一个替代解决方案,它使用CSS选择器和document.querySelectorAll(),我觉得它更可读,尤其是对于那些更精通CSS而不是JavaScript的人来说。


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

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

这取决于你。

getElementById是首选。考虑一个包含以下内容的网页:

<div id="x"></div>

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

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

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

document.formname.checkbox[0].checked实际上可能无法在所有浏览器上工作。document.forms[0].elementsdocument.formName是标准化的,document.getElementById() 也是标准化的

最新更新