如何动态地将<span>标记附加到<p>标记的特定位置?

阿什曼·查布拉

本质上,我正在尝试实现一项功能,该功能在选中时突出显示某些文本。这仅适用于Google Chrome浏览器。

例如:选择之前:

<html>
    <body>
        <p>sample text</p>
    </body>
</html>

从“示例文本”中选择“文本”后:

<html>
    <body>
        <p>sample <span class="state-highlighted">text</span> </p>
    </body>
</html>

JavaScript:

document.body.addEventListener("mousedown", (event) => {
  document.body.addEventListener("mouseup", (event) => {

    // Assume we have checked that mousedown position is different from mouseup position.
    // Not sure what to do after this.

  });
});

我可以从一个简单的问题开始:我如何将span元素插入paragragh元素中,比如说单击?

海道

这里有一种Range.surroundContents方法很方便,但是仅选择元素的一部分时会抛出该方法。
因此,在您的情况下,最好提取当前Range的内容,将其追加到新节点中,然后在Range为以下的位置插入该新节点:

document.getElementById('target').addEventListener('mouseup', e => {
  const sel = getSelection();
  const range = sel.getRangeAt(0);
  const highlighter = document.createElement('span');
  highlighter.classList.add('highlight');
  highlighter.append(range.extractContents());
  range.insertNode(highlighter);
})
.highlight { color: red; }
<p id="target">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery将<span>标记附加到<h1>标题

来自分类Dev

如何使容器<p>标记的宽度与它包含的<span>的宽度匹配?

来自分类Dev

如何使容器<p>标记的宽度与它包含的<span>的宽度匹配?

来自分类Dev

如何使用jquery将<i>标记附加到<a>标记

来自分类Dev

将html标记附加到表头Jquery

来自分类Dev

将html标记附加到表头Jquery

来自分类Dev

如何动态地将行添加到特定的UITableView节?

来自分类Dev

如何动态地将子级添加到expandableListview的特定组中?

来自分类Dev

如何动态地将子级添加到expandableListview的特定组中?

来自分类Dev

动态地将列表项添加到ASP.NET中的选择标记

来自分类Dev

如何动态地向Google地图添加标记?

来自分类Dev

如何动态地将大块HTML附加到div?

来自分类Dev

将文本动态附加到<p>元素内的<span>元素会破坏我的设计

来自分类Dev

如何获取定位标记中span元素的文本?

来自分类Dev

如何动态地在特定位置添加列?

来自分类Dev

将输入字符串附加到定位标记href

来自分类Dev

将标记字符串附加到BeautifulSoup中的标签

来自分类Dev

使用Google Map API将视频附加到标记

来自分类Dev

将父元素属性附加到锚标记href的URL

来自分类Dev

将文字附加到标记为awk的输出中

来自分类Dev

将 javascript onclick 事件附加到锚标记

来自分类Dev

Apache Isis 将 HTML 标记附加到 VM (JAXB)

来自分类Dev

将纬度和经度附加到谷歌地图中的标记

来自分类Dev

jQuery将链接附加到菜单中的特定位置

来自分类Dev

jQuery将链接附加到菜单中的特定位置

来自分类Dev

将char附加到std :: vector <string>的特定位置

来自分类Dev

将文本附加到特定位置的现有文件

来自分类Dev

如何动态地将Image添加到ImageView?

来自分类Dev

如何动态地将图像添加到imageView

Related 相关文章

  1. 1

    jQuery将<span>标记附加到<h1>标题

  2. 2

    如何使容器<p>标记的宽度与它包含的<span>的宽度匹配?

  3. 3

    如何使容器<p>标记的宽度与它包含的<span>的宽度匹配?

  4. 4

    如何使用jquery将<i>标记附加到<a>标记

  5. 5

    将html标记附加到表头Jquery

  6. 6

    将html标记附加到表头Jquery

  7. 7

    如何动态地将行添加到特定的UITableView节?

  8. 8

    如何动态地将子级添加到expandableListview的特定组中?

  9. 9

    如何动态地将子级添加到expandableListview的特定组中?

  10. 10

    动态地将列表项添加到ASP.NET中的选择标记

  11. 11

    如何动态地向Google地图添加标记?

  12. 12

    如何动态地将大块HTML附加到div?

  13. 13

    将文本动态附加到<p>元素内的<span>元素会破坏我的设计

  14. 14

    如何获取定位标记中span元素的文本?

  15. 15

    如何动态地在特定位置添加列?

  16. 16

    将输入字符串附加到定位标记href

  17. 17

    将标记字符串附加到BeautifulSoup中的标签

  18. 18

    使用Google Map API将视频附加到标记

  19. 19

    将父元素属性附加到锚标记href的URL

  20. 20

    将文字附加到标记为awk的输出中

  21. 21

    将 javascript onclick 事件附加到锚标记

  22. 22

    Apache Isis 将 HTML 标记附加到 VM (JAXB)

  23. 23

    将纬度和经度附加到谷歌地图中的标记

  24. 24

    jQuery将链接附加到菜单中的特定位置

  25. 25

    jQuery将链接附加到菜单中的特定位置

  26. 26

    将char附加到std :: vector <string>的特定位置

  27. 27

    将文本附加到特定位置的现有文件

  28. 28

    如何动态地将Image添加到ImageView?

  29. 29

    如何动态地将图像添加到imageView

热门标签

归档