it-swarm.dev

javascript entfernen li ohne ul entfernen?

Gibt es eine Möglichkeit, die li-Elemente einer ul zu entfernen, ohne auch die ul zu entfernen? Ich kann das nur scheinbar finden.

var element = document.getElementById('myList');
element.parentNode.removeChild(element);

Aber das entfernt die ul. Ich hoffe in der Lage zu sein, li-Elemente on the fly zu entfernen und anzufügen, ohne auch jedes Mal, wenn ich li-Elemente entferne, das ul erstellen zu müssen. Einfach nach einem einfacheren Weg suchen. Danke für jede Hilfe.

<div id="listView">
  <ul id="myList" class="myList-class">
    <li>item 1</li>
    <li>item 2</li>
  </ul>
</div>
10
MAZUMA

Sie können so etwas tun.

var myList = document.getElementById('myList');
myList.innerHTML = '';

Wenn Sie jQuery verwenden

$('#myList').empty();

Bei beiden wird ALLES aus der Liste entfernt.

13
Justin Wood

Das sollte den Trick tun:

var lis = document.querySelectorAll('#myList li');
for(var i=0; li=lis[i]; i++) {
    li.parentNode.removeChild(li);
}

Demo http://jsfiddle.net/krasimir/UhhuX/

9
Krasimir

Der Grund dafür ist, dass ulentfernt wird, weil die Variable elementauf ulverweist. Ihre nächste Codezeile wechselt dann zum übergeordneten Element (#listView) und wendet die Methode removechildmit der an sie übergebenen Variablen element(die auf das ulname__-Element verweist) an.

Wenn Sie alle li-Elemente entfernen müssen, können Sie Folgendes verwenden:

document.getElementById('myList').innerHTML = '';

dadurch wird der ulvollständig geleert. Wenn Sie ausgewählte liname__-Elemente entfernen müssen, können Sie von #myList zu den bestimmten untergeordneten Elementen wechseln, indem Sie Folgendes verwenden:

var ulElem = document.getElementById('myList');

ulElem.removeChild(ulElem.childNodes[i])

dabei ist ider Index des liname__, den Sie entfernen möchten (0 für 1st, 1 für 2nd usw.).

Für Referenz: https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild

4
Ben Jackson

Solange wir ein erstes Kind haben, entfernen Sie es. (Das wird so lange sein, wie wir nur ein Mitglied haben).

  const removeNodesFromList = () => {
    const nodes = document.querySelector('.ul-class-selector');
    while (nodes.firstChild) {
      nodes.removeChild(nodes.firstChild);
    }
  };
0
lironn