(请参阅答案末尾的更新。)
你可以获得一个NodeList https://developer.mozilla.org/En/DOM/NodeList所有的input
元素通过getElementsByTagName
(DOM规范 http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-A6C9094, MDC https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName, MSDN http://msdn.microsoft.com/en-us/library/ms536439(VS.85).aspx),然后简单地循环它:
var inputs, index;
inputs = document.getElementsByTagName('input');
for (index = 0; index < inputs.length; ++index) {
// deal with inputs[index] element.
}
我在那里用过它document
,这将搜索整个文档。它也存在于单个元素上(DOM规范 http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1938918D),允许您仅搜索它们的后代而不是整个文档,例如:
var container, inputs, index;
// Get the container element
container = document.getElementById('container');
// Find its child `input` elements
inputs = container.getElementsByTagName('input');
for (index = 0; index < inputs.length; ++index) {
// deal with inputs[index] element.
}
...但你说过你不想使用父母form
,所以第一个例子更适用于您的问题(第二个例子只是为了完整性,以防其他人找到这个答案需要知道)。
Update: getElementsByTagName
是执行上述操作的绝对好方法,但是如果您想做一些稍微复杂的事情,例如只查找所有复选框而不是所有复选框,该怎么办input
元素?
这就是有用的地方querySelectorAll
进来:它让我们获得匹配的元素列表我们想要的任何 CSS 选择器。对于我们的复选框示例:
var checkboxes = document.querySelectorAll("input[type=checkbox]");
您还可以在元素级别使用它。例如,如果我们有一个div
我们的元素element
变量,我们可以找到所有的span
和班级一起foo
里面的那些div
像这样:
var fooSpans = element.querySelectorAll("span.foo");
querySelectorAll
和它的表弟querySelector
(这只是找到first所有现代浏览器都支持(匹配元素而不是给你一个列表),IE8 也支持。