首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JS:在字符串中的注释之间获取HTML

JS:在字符串中的注释之间获取HTML
EN

Stack Overflow用户
提问于 2019-07-03 15:47:18
回答 1查看 21关注 0票数 0

所以,我有这个HTML

代码语言:javascript
运行
复制
<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:

代码语言:javascript
运行
复制
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注释(例如,删除空格)?

EN

回答 1

Stack Overflow用户

发布于 2019-07-03 16:36:02

除了使用.innerHTML,您还可以在for循环中使用editor.children,该循环将子节点上的所有outerHTML属性连接起来,如下所示。

代码语言:javascript
运行
复制
<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>
代码语言:javascript
运行
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56865323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档