2015-11-04 2 views
0

Here Я узнал, как получить form, который содержит div.Получить div при итерации через элементы формы

Теперь, допустим, я хочу очистить все divs внутри form, когда я нажму кнопку «Сброс». При переборе элементов формы:

var F = some_form; 
for (var i=0; i<F.elements.length; i++) { 
    if (F.elements[i].id.substr(0,3) == 'div') { 
     F.elements[i].innerHTML = ''; 
    } 
} 

Я знаю, что divs не добавляются в качестве элементов, содержащих form. Кажется, мне нужно получить document, который содержит form, а затем найдите divs внутри document. Это медленнее. Есть ли другой способ сделать это?

ответ

2

Использование getElementsByTagName() найти div элементы в form:

var F = document.getElementById('foo'); 
 

 
var divs = F.getElementsByTagName('div'); 
 

 
for (var i = 0; i < divs.length; ++i) 
 
    divs[i].innerHTML = '';
<form action="" id="foo"> 
 
    <div>div</div> 
 
    <div>another</div> 
 
</form>

+0

Спасибо, но ... Очень странно! Я не могу найти div, используя F.elements, но они видны с помощью F.getElementsByTagName? Есть ли какая-то логика? – Rodrigo

+1

Да - ["Свойство HTMLFormElement.elements возвращает HTMLFormControlsCollection (HTML 4 HTMLCollection) всех элементов управления формой, содержащихся в элементе FORM, за исключением входных элементов, которые имеют атрибут типа изображения."] (Https: // developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/elements). «Div» не является элементом управления формой, и его содержимое не будет представлено как часть формы. К сожалению, термин «элементы» используется как для элементов формы (свойство '.elements'), так и для любого элемента HTML (' getElementsByTagName() '), но так оно и есть. –

1

Там, чтобы быть какой-то итерации на каком-то уровне. Вы назначили все divs, которые вы хотите настроить для атрибута класса css? Если так, вы можете перебирать их через .getElementsByClassName('className'). НАПРИМЕР.

var divs = some_form.getElementsByClassName('target'), 
    dL = divs.length; 
while(dL--) { 
    divs[dL].innerHTML = ''; 
} 

N.B. Форма .elements таргетированы на name или id атрибутов. См. MDN : HTMLFormElement.elements

+0

Спасибо, но я их не устраиваю. Я думаю, что другой ответ более прост. – Rodrigo

+0

@Rodrigo Нет проблем. Что работает! –

Смежные вопросы