我有一个包含一些 HTML 的变量。此 HTML 不在文档正文中 - 仅在变量中!从这里,我想提取每个的内容li
并将其放入一个数组中,这样我就可以为每个列表项创建一些新的东西。
我可以做这样的事情吗?
var myList = "<ul><li>item 1</li><li>item 2</li><li>item 3</li></ul>";
myList.getElementByTagName('LI') = myLiContents;
感谢您的关注!
我有一个包含一些 HTML 的变量。此 HTML 不在文档正文中 - 仅在变量中!从这里,我想提取每个的内容li
并将其放入一个数组中,这样我就可以为每个列表项创建一些新的东西。
我可以做这样的事情吗?
var myList = "<ul><li>item 1</li><li>item 2</li><li>item 3</li></ul>";
myList.getElementByTagName('LI') = myLiContents;
感谢您的关注!
您不能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, "");
您可以创建一个虚拟元素并将该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
来创建真正的数组。