我想做这样的事情:
var form = document.getElementsByTagName("form")[0];
var form_element_list = form.getElementsByName("foo");
但是,唉,似乎getElementsByName
只能从document
(见MDN)运行。
问题:
为什么只能从文档级别搜索?特别是因为name
属性主要用于表单。
谢谢!
我想做这样的事情:
var form = document.getElementsByTagName("form")[0];
var form_element_list = form.getElementsByName("foo");
但是,唉,似乎getElementsByName
只能从document
(见MDN)运行。
问题:
为什么只能从文档级别搜索?特别是因为name
属性主要用于表单。
谢谢!
为什么只能从文档级别搜索?
出于历史原因?我们真的不知道。但是,名称是全局标识符,就像 中的 id 一样document.getElementsById
,只是它们不是唯一的。
特别是名称属性主要用于表单。
您将为此目的使用表单的.elements
集合,它也可以使用名称来寻址。
您可以只使用 document.formName 其中(formName 是您为表单提供的名称属性)来获取表单,并使用 document.formName.elements 来获取集合中的元素。然后,您可以通过 document.formName.elements.inputID 引用输入元素
根据MDN:
浏览器中加载的每个网页都有自己的文档对象。Document 接口充当网页内容(DOM 树,包括 和 等元素)的入口点,并为文档提供全局功能(例如获取页面的 URL 和在文档中创建新元素)
由于它是一个入口点,因此查找页面元素的方法来自它。