在Web上访问DOM信息

时间:2011-06-23 17:22:13

标签: javascript dom

我是文档对象模型的新手。 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'
     }
 }

我认为更大的问题是我在访问文档时遇到了困难。任何关于两者的线索都将受到赞赏。

3 个答案:

答案 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]。这是一个类似数组的数据结构,可以通过forfor...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

     }
 }