Javascript如何将纯文本html元素拆分为数组?

时间:2019-01-24 06:03:29

标签: javascript html plaintext

如果我有一个包含html元素的字符串,那么创建同级html元素数组的有效方法是什么?

由于可能存在子元素,因此尝试将indexOf与开始标签“ <”的首字母和结束标签的最后一个字母结合使用会变得很复杂。

简单的例子:

<p>Hello there</p>

<h1>Thank you</h1>

谢谢!

4 个答案:

答案 0 :(得分:1)

使用正则表达式和js split方法可以提取。

检查我的代码

    let results = await client.installChaincode(request);

答案 1 :(得分:0)

我相信这就是您想要做的。

  <div id="container">
    <div>child 1</div> 
    <div>child 2</div> 
    <div>child 3</div> 
  </div>
  <script type="text/javascript">
      let elements = [], container = document.getElementById("container");
      for(let i = 0; i < container.children.length; i++){
          elements.push(container.children[i].outerHTML);
      }
      console.log(elements);
</script>

答案 2 :(得分:0)

您可以使用正则表达式解决此问题。

使用正则表达式查找所有开始和结束标记,并用“ /”(其他方式)替换,然后将其拆分,然后使用filter(Boolean)过滤(“”)

代码:

var elements = [],container = document.getElementById("container");
  for(let i = 0; i < container.children.length; i++)    {                     elements.push(container.children[i].outerHTML.replace(/<\/?[^>]+(>|$)/g, ""));
   }
   
      console.log("plainTextArray = ",elements);




let bodyHtml = document.getElementsByTagName('div')["0"].innerHTML;

let plainTextArray = bodyHtml.replace(/<\/?[^>]+(>|$)/g, "//").split("//").filter(Boolean)

console.log('plainTextArray = ',plainTextArray);
<body>
<div id="container"><p>Hello there</p><h1>Thank you</h1></div>
</body>

答案 3 :(得分:0)

您可以像这样使用来从子元素中获取所有文本。

let nodeList = document.getElementById('stack').querySelectorAll('*');
let list = [];
nodeList.forEach(function(val){
	list.push(val.outerHTML)
})
console.log(list); 
<div id="stack">
 <p>Hello there</p>
 <h1>Thank you</h1>
</div>