具有名称为“”的子输入的表单的Grab id;id”;
Grab id of a form that has a child input with a name="id"
所以我遇到了一个奇怪的问题。。。我想获取一个表单的id,比如:
<form id="test">
<input name="id" type="hidden" value/>
</form>
但运行document.getElementById("test").id
并没有像预期的那样返回test
,而是返回带有name="id"
的输入。有人知道这里发生了什么吗?
这是一把小提琴再现了这个问题->http://jsfiddle.net/jascbbfu/
Form控件名称用于创建引用控件的窗体的命名属性。所以你有:
<form id="test">
<input name="id">
</form>
则表单的id属性被分配给名为id=的输入元素的引用。表单控件的名称不应与标准表单属性相同,例如:
<form>
<input name="submit">
</form>
无法调用表单的submit方法,因为form.submit引用的是输入,而不是方法。
如其他答案中所述,您可以将名称更改为与标准表单属性不冲突的名称,也可以使用getAttribute。首选第一种解决方案,因为它还可能为表单控件提供更合适的名称,并避免使用getAttribute。
这里发生的是HTML刚刚正式化时的一个旧工件。它应该只位于命名集合下,但浏览器决定在各种随机位置创建快捷方式访问。无论哪种方式,您都可以在此处阅读更多信息:http://jibbering.com/faq/notes/form-access/一旦我在我的桌面上,我会引用相关的部分。
这是因为这里有一行:
<form id="test">
<input name="id" type="hidden"/> <!-- HERE -->
</form>
当你说:时,浏览器认为你指的是名称为"id"的元素
document.getElementById("test").id // Gets input with the name of "id"
这将是<input>
元素。将其更改为id
以外的其他名称,它就会起作用。
JS似乎正在考虑将id
作为您正在考虑的较大窗体的子对象。您正在寻找函数getAttribute
,它在JSfiddle:中工作
alert(document.getElementById("test").getAttribute("id"));
alert(document.getElementById("test2").getAttribute("id"));
http://jsfiddle.net/jascbbfu/3/
希望能有所帮助!
- 使用javascript更改表单元素的ID值
- 表单提交问题,如何在我的URL末尾获得ID的值
- Php,Javascript-动态表单id's和动态验证
- Javascript尽管ID不同,但只有第一个按钮提交给Ajax表单
- 根据单击的元素填充同一页面中的表单,该元素的 ID 由 JSTL 生成
- Jquery无法找到给定表单id的表单输入
- 如何在 javascript 中将表单中的元素 id 值作为数组传递
- Javascript:表单验证getElementById仅返回第一个id元素
- 网页表单 |始终使用 Id 进行访问
- 通过 AJAX 为每个 ID 提交表单
- 如何在不重新加载的情况下在表单编辑中更改主键后刷新jqgrid行id
- 如何使表单类而不是id的序列化工作
- 无法调用方法“”;getEditResponseUrl"当使用表单ID打开表单时,绑定到工作表的Google
- Mootools提交表单仅在通过ID选择表单时有效
- 修改序列化表单函数以获取输入ID而不是名称
- 如何创建表单输入框的id
- 使用JavaScript/Jquery在Ruby中显示具有相同id/类的表单
- 如何使用Google Analytics Dimensions在多个表单页面上跟踪用户ID
- 具有更改表单ID的选择器
- 如何在phonegap android中动态应用id表单