我正在尝试学习JavaScript以便能够将它与jQuery进行比较.我一直在寻找一个解释(或者证明我正确行事的东西)为什么表单输入中的ID被视为名称属性(以我们选择它们的方式)
<form id="myskills">
<input type="text" id="skillpg">
</form>
Run Code Online (Sandbox Code Playgroud)
如果我想通过ID获取输入,我会这样做:
document.getElementById('skillpg');
Run Code Online (Sandbox Code Playgroud)
我发现我也可以通过这样做来选择相同的输入
document.getElementById('myskills').skillpg
Run Code Online (Sandbox Code Playgroud)
在我看来,代码使用name="skillpg"而不是ID名称获取输入元素.
当我写这个问题时,听起来像我应该接受它并继续前进.但有没有理由不使用这种方式,只是坚持getElementById或使用name属性而不是ID?
谢谢
这是有效的,因为HTMLFormElement有一个特殊的吸气剂:
interface HTMLFormElement : HTMLElement {
...
readonly attribute HTMLFormControlsCollection elements;
readonly attribute long length;
getter Element (unsigned long index);
getter (RadioNodeList or Element) (DOMString name);
};
该getterWIL习惯whenver使用form["name"].因为form.name === form["name"],一切都很好,因为getter 的算法说,你也可以使用id而不是名字:
为命名属性检索索引表单元素时,用户代理必须运行以下步骤:
- 让候选者成为一个活动
RadioNodeList对象,其中包含所有列出的元素,其表单所有者是具有id属性或name属性等于的表单元素name,[...]
现在回到你的问题:
当我写这个问题时,听起来像我应该接受它并继续前进.但有没有理由不使用这种方式,只需坚持使用getElementById或使用name属性而不是ID?
你不应该接受,除非你检查它是a)标准和b)兼容你的目标浏览器.由于它是标准的,您需要检查您的目标浏览器是否兼容.除此之外,它主要是个人偏好.