2010-12-16 6 views
0

Ich habe eine Variable, die etwas HTML enthält. Dieser HTML-Code befindet sich nicht im Dokumentkörper - nur in der Variablen! Von diesem möchte ich den Inhalt jedes li extrahieren und es in ein Array einfügen, damit ich mit jedem Listenelement etwas Neues machen kann.Wie mache ich Listen-Elemente in Javascript Array

Kann ich so etwas tun?

var myList = "<ul><li>item 1</li><li>item 2</li><li>item 3</li></ul>"; 
myList.getElementByTagName('LI') = myLiContents; 

Danke fürs schauen!

Antwort

1

Sie können ein Dummy-Element erstellen und die innerHTML dieses Elements als HTML-String festgelegt Sie haben:

var myList = "<ul><li>item 1</li><li>item 2</li><li>item 3</li></ul>", 
    dummy = document.createElement('div'); 

dummy.innerHTML = myList; 
console.log(dummy.getElementsByTagName('li')); 

ist jedoch zu beachten, dass das Ergebnis von getElementsByTagName ist nicht ein Array, sondern ein nodeList, ein Array-ähnliches Objekt. Sie können dennoch eine Schleife durch die nodeList ausführen, um ein reales Array zu erstellen.

1

Sie können getElementByTagName nicht für eine Zeichenfolge verwenden ... nur für HTML-Elemente, die in das Dokument eingefügt werden. Aber für das, was Sie erreichen wollen, müssen Sie das nicht wirklich tun. Sie können einen regulären Ausdruck verwenden, um alle <li> s aus der Zeichenfolge zu extrahieren:

var li = myList.match(/<li>.*?<\/li>/gi); 

, die ein Array wie folgt produzieren:

["<li>item 1</li>", "<li>item 2</li>", "<li>item 3</li>"] 

Um der zusätzlichen <li> loszuwerden und </li> Sie tun können Zeichenfolge ersetzen, wie Sie durch jeden Artikel durchlaufen:

li[i].replace(/<\/?li>/gi, ""); 
Verwandte Themen