Доступ к информации DOM в Интернете - PullRequest
4 голосов
/ 23 июня 2011

Я новичок в объектной модели документа.Есть ли какая-нибудь java-doc как вещь для DOM.Мне нелегко выяснить следующий код 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 ]

2 голосов
/ 23 июня 2011

Как уже упоминалось, документация MDC является довольно полной.

// почему я должен это делать? В частности, почему нельзя получить доступ к типу, так как eachElement.type == 'checkbox'

.elements возвращает HTMLCollection [документы] . Это массивоподобная структура данных, которую можно просматривать с помощью цикла for или for...in [docs]

for...in зацикливает свойства объектов. Имя свойства (так сказать, индекс, а не его значение) хранится в переменной цикла, поэтому для доступа к соответствующему значению необходимо написать obj[prop].

Это также причина, почему вы не должны использовать for...in здесь. Вы не знаете, зацикливается ли оно на других свойствах коллекции, которые не являются элементами.

Используйте обычный цикл for:

var myElements = ...;
for(var i = myElements.length; i--; ) {
    var element = myElements[i];
    //...
}

Предлагаю также прочитать руководство по JavaScript , чтобы узнать больше о циклах, массивах и объектах.

2 голосов
/ 23 июня 2011

.elements свойство существует только для form элементов https://developer.mozilla.org/en/DOM/HTMLFormElement

Таким образом, в вашем случае idName должен указывать на элемент формы с id="idName", иначе это вызовет ошибку.

Свойство elements вернет коллекцию элементов управления формы. https://developer.mozilla.org/en/DOM/form.elements

0 голосов
/ 23 июня 2011

Вот что он говорит:

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

     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...