2015-11-04 74 views
0

Here我学会了如何获取包含divform迭代表单元素时获取div

现在,假设我想清除form中的所有divs,当我点击'重置'按钮。当通过形式的元件进行迭代:

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的元件。似乎我需要获取包含formdocument,然后在document内搜索divs。尽管如此,速度较慢。有没有其他方法可以做到这一点?

回答

2

使用getElementsByTagName()找到formdiv元素:

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

谢谢,但是...很奇怪!我没有找到使用F.elements的任何div,但它们使用F.getElementsByTagName可见?有什么逻辑吗? – Rodrigo

+1

是 - [“HTMLFormElement.elements属性返回FORM元素中包含的所有表单控件的HTMLFormControlsCollection(HTML 4 HTMLCollection),但输入元素的类型属性为image。”](https:// developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/elements)。 'div'不是表单控件,其内容也不会作为表单的一部分提交。不幸的是,术语“元素”既用于表单元素('.elements'属性),也用于任何HTML元素('getElementsByTagName()'),但事实就是如此。 –

1

那里是在一定程度上有些重复。你有没有分配所有你想要定位一个CSS类属性的div?如果是这样,你可以通过.getElementsByClassName('className')来遍历它们。例如。

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

N.B.表格.elements的目标为nameid属性。见MDN : HTMLFormElement.elements

+0

谢谢,但我没有像他们那样造型。我认为其他答案更直接。 – Rodrigo

+0

@Rodrigo没有probs。什么工程有效! –