【发布时间】:2019-06-14 11:47:18
【问题描述】:
我基于.parents() without jquery - or querySelectorAll for parents创建了一个sn-p
function getParents (el, _class) {
let doc = document
let parents = []
let p = el.parentNode
while (p !== doc) {
let o = p
parents.push(o)
p = o.parentNode
}
parents.push(doc)
return parents[parents.map(x => x.className).indexOf(_class)]
}
document.querySelectorAll('.child1').forEach((e,i)=>{
console.log(getParents(e, 'child4'))
})
<div class="parent">
<div class="child5">
<div class="child4">
<div class="child3">
<div class="child2">
<div class="child1">
1
</div>
</div>
</div>
</div>
</div>
</div>
<div class="parent">
<div class="child5">
<div class="child4">
<div class="child3">
<div class="child2">
<div class="child1">
2
</div>
</div>
</div>
</div>
</div>
</div>
<div class="parent">
<div class="child5">
<div class="child4 hello"> <!-- problem here -->
<div class="child3">
<div class="child2">
<div class="child1">
3
</div>
</div>
</div>
</div>
</div>
</div>
如果<div class="child4 hello"> 没有hello 我可以获得所有child4,如果添加hello 或其他任何内容,我将无法获得child4。我使用indexOf() 我认为不应该是-1 或未定义。有人可以纠正我错误在哪里吗?谢谢
【问题讨论】:
标签: javascript