在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].elements
和document.formName
是标准化的,document.getElementById()
也是标准化的