Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 组合getElementsByTagName和getElementsByClassName_Javascript_Html - Fatal编程技术网

Javascript 组合getElementsByTagName和getElementsByClassName

Javascript 组合getElementsByTagName和getElementsByClassName,javascript,html,Javascript,Html,我试图结合getElementsByTagName和GetElementsByCassName来缩小搜索范围并计算结果节点,但第二次搜索的结果长度始终为0,我不知道为什么 东西 2 东西 2 pElements=document.getElementsByTagName(“p”); 控制台日志(PELENTS); 对于(i=0;i

我试图结合getElementsByTagName和GetElementsByCassName来缩小搜索范围并计算结果节点,但第二次搜索的结果长度始终为0,我不知道为什么


东西

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)组合起来如果您正在寻找同时具有正确标记和类的元素,那么还添加了一种更向后兼容的方式。