Javascript 组合getElementsByTagName和getElementsByClassName
我试图结合getElementsByTagName和GetElementsByCassName来缩小搜索范围并计算结果节点,但第二次搜索的结果长度始终为0,我不知道为什么Javascript 组合getElementsByTagName和getElementsByClassName,javascript,html,Javascript,Html,我试图结合getElementsByTagName和GetElementsByCassName来缩小搜索范围并计算结果节点,但第二次搜索的结果长度始终为0,我不知道为什么 东西 2 东西 2 pElements=document.getElementsByTagName(“p”); 控制台日志(PELENTS); 对于(i=0;i
东西
2
东西
2
pElements=document.getElementsByTagName(“p”);
控制台日志(PELENTS);
对于(i=0;i
第一个示例的问题是:
pElements[i].getElementsByClassName("content")
搜索p元素的子元素。但是由于它实际上在同一个元素上,所以找不到它们
W3C:
“getElementsByClassName()方法返回具有指定类名的元素子元素的集合”
编辑:要查找p元素是否具有content类,而不是GetElementsByCassName(),可以使用
pElements[i].classList.contains("content")
如果元素具有类,则返回true
EDIT2:一种更向后兼容的方法是获取className
属性,在空格上拆分它,并迭代数组以查看类是否存在
var names = pElements[i].className.split(" ");
var found = false;
for(var i = 0; i < names.length; i++){
if(names[i] === "content"){
found = true;
break;
}
}
if(found){
//Your code here
}
var name=pElements[i].className.split(“”);
var=false;
对于(var i=0;i
第一个示例的问题是:
pElements[i].getElementsByClassName("content")
搜索p元素的子元素。但是由于它实际上在同一个元素上,所以找不到它们
W3C:
“getElementsByClassName()方法返回具有指定类名的元素子元素的集合”
编辑:要查找p元素是否具有content类,而不是GetElementsByCassName(),可以使用
pElements[i].classList.contains("content")
如果元素具有类,则返回true
EDIT2:一种更向后兼容的方法是获取className
属性,在空格上拆分它,并迭代数组以查看类是否存在
var names = pElements[i].className.split(" ");
var found = false;
for(var i = 0; i < names.length; i++){
if(names[i] === "content"){
found = true;
break;
}
}
if(found){
//Your code here
}
var name=pElements[i].className.split(“”);
var=false;
对于(var i=0;i
这是因为p元素没有任何类为“content”的元素。p元素本身具有此类,因此您无法找到它,0是正确的
改变
<p class="content">Stuff2</p>
2
到
Stuff2
结果是1。这是因为p元素没有任何类为“content”的元素。p元素本身具有此类,因此您无法找到它,0是正确的 改变
<p class="content">Stuff2</p>
2
到
Stuff2
您将得到1作为结果。您不能将
getElementsByTagName
和getElementsByClassName
组合在一起。因为正如@juunas所提到的,pements
现在由所有
元素的数组组成
当您使用pElements[i].getElementsByClassName(“内容”)
将getElementsByClassName
应用于此结果集时,它会在pElements
的子元素中搜索
提示性结果:
使用getAttribute()
函数检查pements
中每个元素的class
,如
pElements = document.getElementsByTagName("p");
console.log(pElements);
for(var i = 0, j = 0; i < pElements.length; i++) {
if (pElements[i].getAttribute("class") === "content") {
j++;
}
}
console.log("Length of the resulting nodes: ", j);
pElements=document.getElementsByTagName(“p”);
控制台日志(PELENTS);
对于(变量i=0,j=0;i
您不能将getElementsByTagName
和getElementsByClassName
组合在一起。因为正如@juunas所提到的,pements
现在由所有
元素的数组组成
当您使用pElements[i].getElementsByClassName(“内容”)
将getElementsByClassName
应用于此结果集时,它会在pElements
的子元素中搜索
提示性结果:
使用getAttribute()
函数检查pements
中每个元素的class
,如
pElements = document.getElementsByTagName("p");
console.log(pElements);
for(var i = 0, j = 0; i < pElements.length; i++) {
if (pElements[i].getAttribute("class") === "content") {
j++;
}
}
console.log("Length of the resulting nodes: ", j);
pElements=document.getElementsByTagName(“p”);
控制台日志(PELENTS);
对于(变量i=0,j=0;i
因此,如果您要查找同时具有正确标记和类的元素,则实际上不可能将这两个元素(ByTagName和ByClassName)组合起来?还添加了一种更向后兼容的方式。因此,实际上不可能将这两个元素(ByTagName和ByClassName)组合起来如果您正在寻找同时具有正确标记和类的元素,那么还添加了一种更向后兼容的方式。