所以,我有这个HTML
<div contenteditable="true">
<div class="parent-wrap">
<!-- RAW start -->
<p>Lorem</p>
<p>Ipsum</p>
<div>Dolor sit amet</div>
<!-- RAW end -->
</div>
<a href="#">Read more</a>
</div>我需要获取两个html注释之间的html (不包括注释本身),所以只需要2个<p>和<div>Dolor sit amet</div>。我使用innerHTML直接从页面获取html。
这是我的JS:
getValue () {
let html = editor.innerHTML
let rawStart = '<!-- RAW start -->'
let rawEnd = '<!-- RAW end -->'
if (html.search(rawStart) && html.search(rawEnd)) {
html = html.split(rawStart).pop().split(rawEnd)[0]
}
return html
}它是有效的,但我想知道是否有更好的方法?这也会在所有地方都有效吗?或者,是否有浏览器可以修改html注释(例如,删除空格)?
发布于 2019-07-03 16:36:02
除了使用.innerHTML,您还可以在for循环中使用editor.children,该循环将子节点上的所有outerHTML属性连接起来,如下所示。
<div contenteditable="true">
<div class="parent-wrap">
<!-- RAW start -->
<p>Lorem</p>
<p>Ipsum</p>
<div>Dolor sit amet</div>
<!-- RAW end -->
</div>
<a href="#">Read more</a>
</div>function getValue() {
let div = document.querySelector('.parent-wrap');
let html = '';
for(let i=0; i < div.children.length; i++) {
html += div.children[i].outerHTML
}
return html;
}https://stackoverflow.com/questions/56865323
复制相似问题