Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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定义第n个父元素?_Javascript_Html - Fatal编程技术网

如何用纯JavaScript定义第n个父元素?

如何用纯JavaScript定义第n个父元素?,javascript,html,Javascript,Html,如标题所示, 如何在js中以其他方式定义第n个parentElement: var theComment = e.target.parentElement.parentElement.parentElement.parentElement; 您可以为它编写一个循环: const n=4 设elem=e.target for(设i=0;i

如标题所示, 如何在js中以其他方式定义第n个parentElement:

var theComment = e.target.parentElement.parentElement.parentElement.parentElement;

您可以为它编写一个循环:

const n=4
设elem=e.target
for(设i=0;i
但是,正如在注释中提到的,如果您正在寻找一个特定的元素,那么最好只为您正在寻找的元素编写一个选择器


这更适用于您的情况,因为
event.target
可以返回所关注元素的子节点(如果事件冒泡),从而使您的父级计数移动一点。

您可以定义一个函数,该函数在父级层次结构中以循环方式向上提升,例如:

function nthParent(n, el) {
  while (n--) {
    el = el.parentElement;
    if (!el) return null;
  }
  return el;
}

最实用的方法是为该元素指定一个类,并使用
e.target.closest('.comment')
如果给定元素的父节点少于四个,则您的代码将引发错误。@LuizFelipe执行
e.target.parentElement.parentElement.parentElement.parentElement
。我认为这肯定是不可能的。