(请查看答案结尾的更新部分。)
你可以通过使用 getElementsByTagName
(DOM 规范,MDC,MSDN) 获取所有 input
元素的 NodeList
,然后进行简单的遍历:
var inputs, index;
inputs = document.getElementsByTagName('input');
for (index = 0; index < inputs.length; ++index) {
}
我在 document
上使用了它,这将搜索整个文档。它也存在于单个元素上(DOM规范),允许您仅搜索其后代而不是整个文档,例如:
var container, inputs, index;
container = document.getElementById('container');
inputs = container.getElementsByTagName('input');
for (index = 0; index < inputs.length; ++index) {
}
...但你说过不想使用父级form
,所以第一个示例更适用于你的问题(第二个示例只是为了完整性,以防其他人查找此答案时需要知道)。
更新:getElementsByTagName
是做上述操作的绝佳方式,但如果您想要做一些稍微复杂一点的事情,例如仅查找所有复选框而不是所有input
元素怎么办?
这就是有用的querySelectorAll
派上用场的地方:它允许我们获取与任何 CSS 选择器匹配的元素列表。因此,对于我们的复选框示例:
var checkboxes = document.querySelectorAll("input[type=checkbox]")
您也可以在元素级别上使用它。例如,如果我们在变量element
中有一个div
元素,我们可以像这样找到所有在该div
内部具有类名foo
的span
:
var fooSpans = element.querySelectorAll("span.foo")
querySelectorAll
和它的近亲 querySelector
(它只查找第一个匹配元素而不是给你一个列表)被所有现代浏览器支持,包括IE8。
javascript
URL。对于这段特定的代码,我的建议是:保留href
在原地,而只需设置ls[i].onclick= function() { LoadExtern(this.href, 'ControlPanelContent', true, true); };
。 - bobince