0

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

我可以做这样的事情吗?

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

感谢您的关注!

4

2 回答 2

1

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

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, "");
于 2010-12-16T04:18:51.507 回答
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来创建真正的数组。

于 2010-12-16T03:52:26.083 回答