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

发布于 2024-10-07 16:44:24 字数 336 浏览 4 评论 0原文

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

我可以做这样的事情吗?

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

感谢您的关注!

I have a variable which contains some HTML. This HTML is not on the document body - only in the variable! From this, I want to extract the contents of each li and put it into an array, so that I can make something new with each list item.

Can I do something like this?

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

Thanks for looking!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独陪着我 2024-10-14 16:44:24

您可以创建一个虚拟元素,并将该元素的 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 运行循环来创建真正的数组。

You can create a dummy element and set the innerHTML of that element as the HTML string you have:

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

Note however that the result of getElementsByTagName is not an array, but a nodeList, an array-like object. You can still run a loop through the nodeList to create a real array though.

旧街凉风 2024-10-14 16:44:24

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

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

    这将生成一个如下所示的数组:

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

    去除多余的

  • 您可以在循环遍历每个项目时进行字符串替换:

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

    You can't use getElementByTagName on a string... only on HTML elements inserted into the document. But for what you're trying to achieve, you don't really need to do that. You can use a regexp to extract all the <li>s from your string:

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

    Which will produce an array like this:

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

    To get rid of the extra <li> and </li> you can do a string replace as you're looping through each item:

    li[i].replace(/<\/?li>/gi, "");
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文