Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在表单中获取ID不需要getElementById_Javascript_Html - Fatal编程技术网

Javascript 为什么在表单中获取ID不需要getElementById

Javascript 为什么在表单中获取ID不需要getElementById,javascript,html,Javascript,Html,我正在尝试学习JavaScript,以便能够将其与jQuery进行比较。我一直在寻找一个解释或其他东西来证明我做的事情是正确的,为什么表单输入中的ID在我们选择它们的方式中被视为名称属性 <form id="myskills"> <input type="text" id="skillpg"> </form> 错误地,我发现这样做也可以选择相同的输入 document.getElementById('myskills').skillpg 在我看来,

我正在尝试学习JavaScript,以便能够将其与jQuery进行比较。我一直在寻找一个解释或其他东西来证明我做的事情是正确的,为什么表单输入中的ID在我们选择它们的方式中被视为名称属性

<form id="myskills">
    <input type="text" id="skillpg">
</form>
错误地,我发现这样做也可以选择相同的输入

document.getElementById('myskills').skillpg
在我看来,代码获取的输入元素的名称为=skillpg,而不是ID名称

当我写这个问题的时候,听起来我应该接受它,继续前进。但是有没有理由不使用这种方式,只使用getElementById或者使用name属性而不是ID

谢谢

这很有效,因为它有一个特殊的getter:

interface HTMLFormElement : HTMLElement { ... readonly attribute HTMLFormControlsCollection elements; readonly attribute long length; getter Element (unsigned long index); getter (RadioNodeList or Element) (DOMString name); }; 当您使用form[name]时,将使用getter。因为form.name===form[name],一切都很好,因为getter的函数表示,您也可以使用id而不是名称:

为表单元素编制索引以进行命名属性检索时,用户代理必须运行以下步骤:

假设候选对象是一个live RadioNodeList对象,其中包含所有列出的元素,这些元素的表单所有者是具有id属性或名称属性(等于名称[…])的表单元素 现在回到你的问题:

当我写这个问题的时候,听起来我应该接受它,继续前进。但是有没有理由不使用这种方式,只使用getElementById或者使用name属性而不是ID

您不应该接受,除非您检查了它是否是与目标浏览器兼容的标准和b。因为它是标准的,所以您需要检查目标浏览器是否兼容。除此之外,这主要是个人喜好。

这是因为它有一个特殊的getter:

interface HTMLFormElement : HTMLElement { ... readonly attribute HTMLFormControlsCollection elements; readonly attribute long length; getter Element (unsigned long index); getter (RadioNodeList or Element) (DOMString name); }; 当您使用form[name]时,将使用getter。因为form.name===form[name],一切都很好,因为getter的函数表示,您也可以使用id而不是名称:

为表单元素编制索引以进行命名属性检索时,用户代理必须运行以下步骤:

假设候选对象是一个live RadioNodeList对象,其中包含所有列出的元素,这些元素的表单所有者是具有id属性或名称属性(等于名称[…])的表单元素 现在回到你的问题:

当我写这个问题的时候,听起来我应该接受它,继续前进。但是有没有理由不使用这种方式,只使用getElementById或者使用name属性而不是ID


您不应该接受,除非您检查了它是否是与目标浏览器兼容的标准和b。因为它是标准的,所以您需要检查目标浏览器是否兼容。除此之外,这主要是个人偏好。

hmm我刚刚在chrome中测试了这一点,但在尝试按id或名称访问我的div时未定义:document.forms[0]。myDiv@SonicSoul:嗯,div没有表单所有者,是吗?嗯,我刚刚在chrome中测试了这个,但是在尝试按id或名称访问我的div时没有定义:document.forms[0].myDiv@SonicSoul:嗯,Div没有表单所有者,是吗?