无法获取表单的值's在某些条件下的id

Impossible to get the value of a form's id in certains conditions

本文关键字:id 条件下 获取 表单      更新时间:2023-09-26

<form>中的<input><img>具有以"id"为值的id或名称时,似乎不可能获得<form>的id的预期值。

示例:

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

调用document.querySelector('form').id返回HTMLInputElement而不是"test"

以下是一个JSFiddle:http://jsfiddle.net/zyy54jmj/6/

你知道为什么会这样吗?有办法解决这个问题吗?

谢谢。

在DOM属性方面,"无效"名称和"已取"名称之间存在差异。

所有这些都是可以在FORM元素上找到的有效方法/属性(由于接口继承),并且所有这些方法/属性都可以被相同名称的字段覆盖。因此,我建议避免使用这些名称,以免遇到意外冲突:

ELEMENT_NODE
ATTRIBUTE_NODE
TEXT_NODE
CDATA_SECTION_NODE
ENTITY_REFERENCE_NODE
ENTITY_NODE
PROCESSING_INSTRUCTION_NODE
COMMENT_NODE
DOCUMENT_NODE
DOCUMENT_TYPE_NODE
DOCUMENT_FRAGMENT_NODE
NOTATION_NODE
nodeName
nodeValue
nodeType
parentNode
childNodes
firstChild
lastChild
previousSibling
nextSibling
attributes
ownerDocument
insertBefore
replaceChild
removeChild
appendChild
hasChildNodes
cloneNode
normalize
isSupported
namespaceURI
prefix
localName
hasAttributes
id
title
lang
dir
className
elements
length
name
acceptCharset
action
enctype
method
target
submit
reset
item
namedItem

好吧,你可以得到这样一个元素的任何属性值:

var x = document.querySelectorAll('element')[0].getAttribute("attribute")

在这种情况下,它是一个表单的id,所以

var formId = document.querySelectorAll('form')[0].getAttribute("id")

这将有助于了解你正在努力实现什么,因为这不是一个好的做法。您基本上是在遍历整个DOM以找到表单的id并如何使用它?