我是文档对象模型的新手。 DOM有没有类似java-doc的东西。我很难搞清楚下面的javascript代码。
myElements = document.getElementById('idName').elements // whose attribute is elements part of ? Element Object or Node?
for (var eachElement in myElements) {
if (myElement[eachElement].type == 'checkbox' ) {
// why do I have to do this? Specifically, why can't type be accessed as eachElement.type == 'checkbox'
}
}
我认为更大的问题是我在访问文档时遇到了困难。任何关于两者的线索都将受到赞赏。
答案 0 :(得分:2)
.elements
属性仅适用于form
元素https://developer.mozilla.org/en/DOM/HTMLFormElement
因此,在您的情况下,idName
必须指向具有id="idName"
的表单元素,否则会导致错误。
elements
属性将返回表单控件的集合。 https://developer.mozilla.org/en/DOM/form.elements
答案 1 :(得分:2)
如前所述,MDC documentation非常全面。
//为什么我要这样做?具体来说,为什么不能输入类型为eachElement.type =='checkbox'
.elements
会返回HTMLCollection
[docs]。这是一个类似数组的数据结构,可以通过for
或for...in
[docs]循环遍历。
for...in
遍历对象的属性。 属性名称(索引,可以说,不是它的值)存储在循环变量中,因此,要访问相应的值,您必须编写obj[prop]
。
这也是你不应该在这里使用for...in
的原因。您不知道它是否也循环不是元素的集合的其他属性。
使用普通for
循环:
var myElements = ...;
for(var i = myElements.length; i--; ) {
var element = myElements[i];
//...
}
我建议您还阅读JavaScript guide以了解有关循环,数组和对象的更多信息。
答案 2 :(得分:0)
以下是它的说法:
myElements = document.getElementById('idName').elements
//Find the form with the id="idName"
//and gather all the form elements in an object/array
//because there could be more than one element in the form,
//you will need to loop through the object
//loop now and for each element that is a checkbox
//do the following, where it says DO SOMETHING
for (var eachElement in myElements) {
if (myElement[eachElement].type == 'checkbox' ) {
//DO SOMETHING
}
}