2012-11-28 87 views
2

我正在创建一个函数,该函数具有一个运行特定div中每个标记的for循环。例如,这里将是DIV:如何循环访问特定标签内的每个标签?

<div> 
<input id="inputid"></input> 
<a id="aid"></a> 
<div id="divid"></div> 
</div> 

有没有在JavaScript中的“为每个标签在X”之类的功能,让我来遍历呢?请记住,我不能这样做在jQuery中,每个标签可能会有所不同,如上所示。

+0

为什么你不能做到这一点在jQuery的迭代? – yoavmatchulsky

+1

这个项目给我的部分好处是学习javascript作为一个入口点.net语言或java和jquery太不相似了 –

回答

7

如果您希望包含在专区内的所有元素(包括儿童的孩子,等...),你只想要元素(而不是其他类型的节点),你希望它在所有的浏览器,那么你可以使用getElementsByTagName("*")这样的:

var allTags = document.getElementById('container').getElementsByTagName("*"); 
for (var i = 0, len = allTags.length; i < len; i++) { 
    // allTags[i] is an element within the container object 
    // allTags[i].id is the id of the element (if there is one) 
} 

document.getElementById('container')只是一些手段得到的容器元素 - 您可以使用适合得到包含父元素的任何方法。

getElementsByTagName("*")可以采取一个通配符如图所以它返回包含在所述节点中的所有元素,它可以被称为任何元件上只检索从含有元素中的元素。

+0

谢谢,这就是我所追求的。 –

+0

最后一点,如果您有时间,我可以使用if(allTags [i] .id!= null){}来确定标签是否有ID? –

+1

@CaptainDando - 您可以使用if(allTags [i] .id){}'来检查有效的ID。它可能是'未定义'或一个空字符串,如果不存在,这将检查两者之一。 – jfriend00

1

试试这个:

var div = getElementById('containerDivId'); 
for (var i = 0; i < div.childNodes.length; i++) 
{ 
    console.log(div.childNodes[i]); 
} 
-1

我你想通过所有FO关闭所有的孩子标签(不只是一级子女)

jQuery(element).find('*').each(function (index,value) { 
     $.each(value.attributes, function(i, attrib){ 
     var name = attrib.name, 
      value = attrib.value; 
     // do whatever you wann do 
     console.log({ attributeName : name, attributeValue: value}); 
     }); 
}); 
+1

-1这个问题明确排除了jQuery。 – jfriend00

+1

认为“记住我不能在jQuery中这样做”反驳了上尉Dando找不到在jQuery中这样做的方法。我的不好 – toske

+1

对不起,这将是一个很好的答案,但我特别关注javascript。感谢您的时间 –