Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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;id";_Javascript_Forms_Input - Fatal编程技术网

Javascript 具有名称为“”的子输入的窗体的抓取id;id";

Javascript 具有名称为“”的子输入的窗体的抓取id;id";,javascript,forms,input,Javascript,Forms,Input,所以我遇到了一个奇怪的问题。。。 我想获取一个表单的id,比如: <form id="test"> <input name="id" type="hidden" value/> </form> 但是运行document.getElementById(“test”).id不会像预期的那样返回test,而是返回带有name=“id”的输入。有人知道这是怎么回事吗 这里有一把小提琴再现了这个问题->这是因为这里的这一行: <form id="te

所以我遇到了一个奇怪的问题。。。 我想获取一个表单的id,比如:

<form id="test">
    <input name="id" type="hidden" value/>
</form>

但是运行
document.getElementById(“test”).id
不会像预期的那样返回
test
,而是返回带有
name=“id”
的输入。有人知道这是怎么回事吗


这里有一把小提琴再现了这个问题->

这是因为这里的这一行:

<form id="test">
    <input name="id" type="hidden"/>   <!-- HERE -->
</form>

这将是
元素。将它更改为除
id
之外的另一个名称,它将起作用。

这里发生的是HTML刚刚正式化时的旧工件。它应该只放在一个命名的集合下,但浏览器决定在不同的随机位置创建快捷方式访问。无论哪种方式,你都可以在这里阅读更多内容:一旦我在我的桌面上,我将引用相关部分

JS似乎正在考虑将
id
作为您正在考虑的更大表单的子对象。您正在寻找函数,
getAttribute
,它在JSFIDLE中工作:

alert(document.getElementById("test").getAttribute("id"));
alert(document.getElementById("test2").getAttribute("id"));


希望有帮助

表单控件名称用于创建引用该控件的表单的命名属性。因此,你有:

<form id="test">
  <input name="id">
</form>

然后为表单的id属性指定一个对名为id的输入元素的引用。表单控件的名称不应与标准表单属性相同,例如,在以下情况下:

<form>
  <input name="submit">
</form>

无法调用表单的submit方法,因为form.submit引用的是输入,而不是方法


如其他答案中所述,您可以将名称更改为与标准表单属性不冲突的名称,或者使用getAttribute。首选第一种解决方案,因为它还可能为表单控件提供更合适的名称,并避免使用getAttribute。

为什么需要查找表单的id?您已经有了它…嗯,在您的JSFIDLE中,我注意到第二个测试输入的名称是'id1';我敢打赌,它将
.id
解释为该名称的子元素,而不是其本身的实际属性。我要进去看看jsfiddle@Deep我知道我有id,这是一个概念证明…不是关于HTML,而是关于DOM。谢谢,我不知道你可以覆盖这样的属性,非常粗糙;p我可能会使用getAttribute或添加自定义属性(例如“column=”),因为我喜欢将表单输入直接映射到数据库列的想法。
<form>
  <input name="submit">
</form>