我想获取特定元素的父ID。使用display:none隐藏父元素,因为我需要它来获取空间。
我已经编写了一个Javascript,它根据父类来从元素的父级获取id。
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>
有关ID返回的信息:
<script type="text/javascript">
function goSubcategory(current, subcategory) {
var sc_current = getParentDivId(current, "subcategories");
var sc_target = getParentDivId(subcategory, "subcategories");
console.log("current: " + sc_current);
console.log("target: " + sc_target);
}
</script>
当onclick =&#34; goSubcategory(this,contact)时,它会在控制台中返回
current: null
target: scalgemeen
这是正确的,因为&#39;这个&#39;在子类别类中没有父级 &#39;接触&#39;在子类别类中有父母,id =&#39; scalgemeen&#39;
然而,onclick =&#34; goSubcategory(this,spaans)在控制台中返回
current: scalgemeen
target: scalgemeen
这是不正确的,因为&#39; spaans&#39;应该有父母id =&#39; schuisartsen&#39;
注意,当onclick =&#34; goSubcategory(this,spaans)被选中时,所有具有类别类别的元素都是display:none以及element row2。
是否有一种方法可以让我获得正确的目标ID。
答案 0 :(得分:0)
我认为这是你的问题。一个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;
。