获取元素的父div

时间:2011-07-28 09:35:58

标签: javascript html getelementbyid

这应该很简单,但我遇到了麻烦。如何获取子元素的父div?

我的HTML:

<div id="test">
    <p id="myParagraph">Testing</p>
</div>

我的JavaScript:

var pDoc = document.getElementById("myParagraph");
var parentDiv = ??????????   

我原以为document.parentparent.container可以正常工作,但我不断遇到not defined错误。请注意,pDoc已定义,而不是某些变量。

有什么想法吗?

P.S。如果可能的话,我宁愿避免使用jQuery。

7 个答案:

答案 0 :(得分:296)

您正在寻找parentNodeElement继承自Node

parentDiv = pDoc.parentNode;

Handy References:

答案 1 :(得分:30)

如果您正在寻找比直接父级更远的特定类型的元素,您可以使用一个上升到DOM的函数,直到它找到一个,或者不是:

// Find first ancestor of el with tagName
// or undefined if not found
function upTo(el, tagName) {
  tagName = tagName.toLowerCase();

  while (el && el.parentNode) {
    el = el.parentNode;
    if (el.tagName && el.tagName.toLowerCase() == tagName) {
      return el;
    }
  }

  // Many DOM methods return null if they don't 
  // find the element they are searching for
  // It would be OK to omit the following and just
  // return undefined
  return null;
}

答案 2 :(得分:12)

属性pDoc.parentElementpDoc.parentNode会为您提供父元素。

答案 3 :(得分:2)

这可能会对你有帮助。

ParentID = pDoc.offsetParent;
alert(ParentID.id); 

答案 4 :(得分:2)

var parentDiv = pDoc.parentElement

编辑:在某些情况下,这有时会parentNode

https://developer.mozilla.org/en-US/docs/Web/API/Node/parentElement

答案 5 :(得分:0)

当您尝试将元素放置在&#34; real-flow&#34;时,了解元素的父元素非常有用。元素。

下面给出的代码将输出提供了id的元素的父ID。可用于错位诊断。

<!-- Patch of code to find parent -->
<p id="demo">Click the button </p>
<button onclick="parentFinder()">Find Parent</button>
<script>
function parentFinder()
{
    var x=document.getElementById("demo"); 
    var y=document.getElementById("*id of Element you want to know parent of*");
    x.innerHTML=y.parentNode.id;
}
</script>
<!-- Patch ends -->

答案 6 :(得分:0)

最近我不得不做类似的事情,我使用了以下代码段:

const getNode = () =>
  for (let el = this.$el; el && el.parentNode; el = el.parentNode){
    if (/* insert your condition here */) return el;
  }
  return null
})

该函数将返回满足您条件的元素。这是我正在寻找的元素上的CSS类。如果没有这样的元素,它将返回null

以防有人寻找多个元素,它只会返回最接近您提供的元素的父元素

我的例子是:

if (el.classList?.contains('o-modal')) return el;

我在vue组件(this。$ el)中使用了它,将其更改为您的document.getElementById函数,您很高兴。希望对某些人有用✌️