如何将列表项放入javascript数组中

时间:2010-12-16 03:45:56

标签: javascript getelementsbytagname

我有一个包含一些HTML的变量。此HTML不在文档正文中 - 仅在变量中!从这里,我想提取每个li的内容并将其放入一个数组中,这样我就可以为每个列表项创建新内容。

我可以这样做吗?

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

感谢您的期待!

2 个答案:

答案 0 :(得分:1)

您可以创建一个虚拟元素,并将该元素的innerHTML设置为您拥有的HTML字符串:

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'));

但请注意,getElementsByTagName的结果是数组,而是nodeList,一个类似数组的对象。您仍然可以通过nodeList运行循环来创建一个真正的数组。

答案 1 :(得分:1)

您不能在字符串上使用getElementByTagName ...仅限于插入到文档中的HTML元素。但是对于你想要实现的目标,你并不需要那样做。您可以使用正则表达式从字符串中提取所有<li>

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

哪个会生成这样的数组:

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

要摆脱额外的<li></li>,您可以在循环浏览每个项目时执行字符串替换:

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