Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.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 如何检测类名为parent/高于所有其他类名的元素? 我得到的班级名称有class-1、class-2或class-3 可以有很多类(不一定是3个),但我会知道所有的类名 我不知道DOM的结构 我只知道有一个类(包含这个类的元素)是所有类的父类_Javascript_Html_Dom - Fatal编程技术网

Javascript 如何检测类名为parent/高于所有其他类名的元素? 我得到的班级名称有class-1、class-2或class-3 可以有很多类(不一定是3个),但我会知道所有的类名 我不知道DOM的结构 我只知道有一个类(包含这个类的元素)是所有类的父类

Javascript 如何检测类名为parent/高于所有其他类名的元素? 我得到的班级名称有class-1、class-2或class-3 可以有很多类(不一定是3个),但我会知道所有的类名 我不知道DOM的结构 我只知道有一个类(包含这个类的元素)是所有类的父类,javascript,html,dom,Javascript,Html,Dom,但是我应该如何找到哪个类是父类/高于所有其他已知类?是class-1、class-2还是class-3 我有类似这样的HTML <div> <div> Hey nice talking to you </div> <div> Hey how are you</div> <div><br/></div> <div class="class-1

但是我应该如何找到哪个类是父类/高于所有其他已知类?
class-1
class-2
还是
class-3

我有类似这样的HTML

    <div>
      <div> Hey nice talking to you </div>
      <div> Hey how are you</div>
      <div><br/></div>
      <div class="class-1">
        <div>Hey, are you there?</div>
        <div class="class-2">
          <div>How was the day</div>
          <div class="class-3"><br/></div>
        </div>
      </div>
    </div>
你能帮我吗?
请不要使用jQuery。

一旦您找到单个类的存在,请查看每个类数组中单个元素的.innerHTML,查看是否在其中找到其他找到的类(使其成为找到的类的父类)。然后跟踪。现在,后续找到的类是否有包含当前父级的元素?做同样的事情:在每个元素上搜索innerHTML。祝你好运。

一旦你找到了单个类的存在,看看每个类数组中单个元素的.innerHTML,看看是否在其中找到了其他找到的类(使其成为找到的类的父类)。然后跟踪。现在,后续找到的类是否有包含当前父级的元素?做同样的事情:在每个元素上搜索innerHTML。祝你好运。

最简单的痛苦方法是从根节点遍历DOM&只要列表中的一个类中的任何直接子类相等,就立即停止

const class_list = [];

recursion(element) {
  if (element === null) return false;

  // If element has one of the class from the list of class then return element.parentNode

  const children = element.children;
  children.forEach(child => recursion(element));

  return false;
}
通过调用

const parent_node = recursion(document.getElementById('body'));
if (parent_node) // this is the parent that has all the class element children

最简单的痛苦方法是从根节点遍历DOM&只要列表中的多个类中有一个类的任何直接子类相等,就立即停止

const class_list = [];

recursion(element) {
  if (element === null) return false;

  // If element has one of the class from the list of class then return element.parentNode

  const children = element.children;
  children.forEach(child => recursion(element));

  return false;
}
通过调用

const parent_node = recursion(document.getElementById('body'));
if (parent_node) // this is the parent that has all the class element children

我唯一能想到的就是在数组上循环并选择元素,然后检查其中是否存在其他2个元素。父对象将是匹配项最多的对象。这假设每个元素只有一个元素。如果有更多的逻辑将是必要的。(我们需要所有可能结果的测试用例)

var classes=[“.class-1”、“.class-2”、“.class-3”]
var结果=类。减少((obj、键、i、arr)=>{
常数cpy=arr.slice()
cpy.接头(i,1)
常数计数=
文档查询选择器(键)
.querySelectorAll(cpy.join(“,”))
.长度
如果(计数>对象计数){
返回{键,计数}
}
返回obj
},{键:“”,计数:-1})
console.log(result.key)

嘿,很高兴和你谈话
嗨,你好吗

嘿,你在吗? 今天怎么样

我能想到的唯一一件事是在数组上循环并选择元素,然后检查其中是否存在其他2个元素。父对象将是匹配项最多的对象。这假设每个元素只有一个元素。如果有更多的逻辑将是必要的。(我们需要所有可能结果的测试用例)

var classes=[“.class-1”、“.class-2”、“.class-3”]
var结果=类。减少((obj、键、i、arr)=>{
常数cpy=arr.slice()
cpy.接头(i,1)
常数计数=
文档查询选择器(键)
.querySelectorAll(cpy.join(“,”))
.长度
如果(计数>对象计数){
返回{键,计数}
}
返回obj
},{键:“”,计数:-1})
console.log(result.key)

嘿,很高兴和你谈话
嗨,你好吗

嘿,你在吗? 今天怎么样

如果您使用的是现代浏览器,则可以使用查看是否存在任何具有其他类之一的祖先元素。如果不是,那么您已经找到了类中最顶层的元素。这假设DOM中每个类只有一个元素

基本上,使用允许我使用函数遍历数组并进行聚合。函数获取当前类并查找具有该类的元素。然后,它获取类的数组(我们正在测试的除外),并查找当前元素是否将其中一个类作为父类。如果不是,我们有最上面的元素

const parent=[“1类”、“2类”、“3类”]。reduce((agg、cur、idx、arr)=>{
const sut=document.querySelector(`.${cur}`);
const hasParent=arr.filter(e=>e!==cur).some(clas=>sut.closest(`.${clas}`)!==null);
返回hasParent?agg:sut;
},空);
console.log(parent.className)

嘿,很高兴和你谈话
嗨,你好吗

嘿,你在吗? 今天怎么样

如果您使用的是现代浏览器,则可以使用查看是否存在任何具有其他类之一的祖先元素。如果不是,那么您已经找到了类中最顶层的元素。这假设DOM中每个类只有一个元素

基本上,使用允许我使用函数遍历数组并进行聚合。函数获取当前类并查找具有该类的元素。然后,它获取类的数组(我们正在测试的除外),并查找当前元素是否将其中一个类作为父类。如果不是,我们有最上面的元素

const parent=[“1类”、“2类”、“3类”]。reduce((agg、cur、idx、arr)=>{
const sut=document.querySelector(`.${cur}`);
const hasParent=arr.filter(e=>e!==cur).some(clas=>sut.closest(`.${clas}`)!==null);
返回hasParent?agg:sut;
},空);
console.log(parent.className)

嘿,很高兴和你谈话
嗨,你好吗

嘿,你在吗? 今天怎么样
是t