Ich versuche, eine rekursive Funktion zu verwenden, um mehrere verschachtelte UL/LI-Elemente im DOM anzuzeigen/auszublenden.Rekursive Funktion für untergeordnete DOM-Elemente
Ich habe eine Funktion, die für einzelne verschachtelt funktioniert, aber ich versuche, eine rekursive Funktion zu verwenden, um eine Menge verschachtelter Elemente zu steuern x. Hier
ist, was ich derzeit haben:
HTML
<section data-range="true">
<input type="range">
<ul>
<li>Item one</li>
<li>Item two</li>
<ul>
<li>Nestd two-one</li>
<li>Nestd two-two</li>
<ul>
<li>Double-nested one</li>
</ul>
</ul>
<li>Item three</li>
</ul>
</section>
JS:
/* eventListener
* Attach an event listener to this element
*
* @param Object - Event object
*/
function eventListener(el) {
el.addEventListener('change', function(e) {
// List
else if (el.parentNode.children[1].nodeName == "UL" || el.parentNode.children[1].nodeName == "OL") {
updateList(e, el.value);
}
});
}
/* updateList
*
* @param Object - Event object
* @param Real - Range value (i.e. 3.2)
*/
function updateList(e, range) {
var target = e.srcElement || e.target;
var list = target.nextSibling.nextElementSibling;
var listNumber = list.childElementCount;
displayChildren(list, listNumber);
}
/* displayChildren
*
* @param Object - Event object
*/
function displayChildren(list, listNumber) {
for (var i = 0; i < listNumber; i++) {
if (list.children[i].nodeName != 'UL') {
list.children[i].style.display = (list.children[i].getAttribute('data-position') <= range) ? "":"none";
}
if (list.children[i].children.length > 0) {
displayChildren(list.children[i], list.children[i].childElementCount);
}
}
}
Hier sind einige aktuelle Beispiel:
- JSbin mit rekursive Funktion auf verschachtelte Elemente.
- JSbin mit funktionierenden verschachtelten Elementen.
Alle hilfreiche Tipps werden geschätzt.
Bitte beschreiben Sie detaillierter, was Sie zu erreichen versuchen. Bitte zeigen oder beschreiben Sie vorher/nachher Ergebnisse, damit wir genau sehen können, womit Sie anfangen und womit Sie enden möchten. – jfriend00