从JavaScript中具有display:none的父div获取ID
我想获取特定元素的父元素的id。父元素使用display:none隐藏,因为我需要它不获取空间 我编写了一个Javascript,它根据parents类从元素的父级获取id从JavaScript中具有display:none的父div获取ID,javascript,html,css,parent,Javascript,Html,Css,Parent,我想获取特定元素的父元素的id。父元素使用display:none隐藏,因为我需要它不获取空间 我编写了一个Javascript,它根据parents类从元素的父级获取id function getParentDivId(divName, classNameParent) { do { divName = divName.parentNode; // get parentdiv from initial div if (divName.className
function getParentDivId(divName, classNameParent) {
do {
divName = divName.parentNode; // get parentdiv from initial div
if (divName.className == classNameParent) { // check if parent div belongs to specified class
return divName.id; // return the id of the parent div
}
} while (divName.parentNode) { // while div has parent do above function
return null;
}
}
这是HTML代码
<div class="row" id="row1">
<!-- code for a single main category with several subcategories -->
<!-- all subcategories can be hidden by setting the subcategories display property to none-->
<!-- all subcategories can be shown by setting the categories display property to inline-block-->
<div class="categories" id="calgemeen">
<div class="item" id="algemeen">algemeen
<div class="press" onclick="goSubcategory(this, contact);"></div>
</div>
</div>
<div class="subcategories" id="scalgemeen">
<!--subcategories can be shown using item, note the weird -->
<!--syntax ><div this is necessary to remove the whitespace between inline-blocks-->
<div class="subcategory" id="info"><div class="item">info</div></div
><div class="subcategory" id="contact"><div class="item">contact
<div class="press" onclick="goSubcategory(this, spaans);"></div></div></div
><div class="subcategory" id="route"><div class="item">route</div></div>
</div>
</div>
<div class="row" id="row2">
<div class="categories" id="chuisartsen">
<div class="item">huisartsen
</div>
</div>
<div class="subcategories" id="schuisartsen">
<div class="subcategory" id="spaans"><div class="item">spaans</div></div
><div class="subcategory" id="engels"><div class="item">stelten</div></div
><div class="subcategory" id="frans"><div class="item">willemsen</div></div>
</div>
</div>
这是正确的,因为“This”在子类别和类中没有父级
“联系人”在子类别类中确实有一个父级,id='scalgeen'
但是,onclick=“goSubcategory(这是spaans)会在控制台中返回
current: scalgemeen
target: scalgemeen
这是不正确的,因为“spaans”应该有一个id为='schuisartsen'的父项
请注意,当选择onclick=“goSubcategory”(这是spaans)时,所有具有类类别的元素都将显示:无以及元素行2
有一种方法可以让我获得正确的目标id。我想这是你的问题。do…while循环应类似于:
do {
//do something
}
while(conditon==true);
下面的步骤也是如此。如果你在其他地方没有任何错误,它可能对你有用
function getParentDivId(divName, classNameParent) {
do {
divName = divName.parentNode; // get parentdiv from initial div
if (divName.className == classNameParent) { // check if parent div belongs to specified class
return divName.id; // return the id of the parent div
}
} while (divName.parentNode); // while div has parent do above function
}
如果你想打破循环,那么使用关键字
break代码>这里的联系人是什么,似乎应该在quotes@shadow:contact指的是元素id。您好,Amit,感谢您抽出时间检查我的问题。然而,divName.parentNode本身就是一个条件,只要它不为NULL,循环就会继续,并在它变为NULL时保持(并返回NULL)。您需要这样做,while循环一旦找到子类别的第一个实例就结束,这似乎不是问题所在。我很确定这个问题与spaans所属的subcategories元素具有display:none属性有关。如果是这样,您应该接受我的答案,这样它可能对@jhwst的某个人有用。这个问题似乎与此函数无关。
do {
//do something
}
while(conditon==true);
function getParentDivId(divName, classNameParent) {
do {
divName = divName.parentNode; // get parentdiv from initial div
if (divName.className == classNameParent) { // check if parent div belongs to specified class
return divName.id; // return the id of the parent div
}
} while (divName.parentNode); // while div has parent do above function
}