如果我有一个包含html元素的字符串,那么创建同级html元素数组的有效方法是什么?
由于可能存在子元素,因此尝试将indexOf与开始标签“ <”的首字母和结束标签的最后一个字母结合使用会变得很复杂。
简单的例子:
<p>Hello there</p>
<h1>Thank you</h1>
谢谢!
答案 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>