如何在选定的文本JavaScript中查找特定标记

如何在选定的文本JavaScript中查找特定标记,javascript,html,Javascript,Html,我希望使用JavaScript检查所选文本中是否有特定标记。本质上,如果文本已经是粗体的,它也会决定是否取消绑定文本(这是一个学习项目,所以我不打算使用现有的WYSIWYG文本编辑器) 因此,基本上,我有一个可编辑的“div”,然后在旁边有另一个div,旁边有按钮来设置字体样式。以下是HTML代码: <div class = 'edit_menu'> <a id = 'b' title = 'Bold'><image class = 'icon' src = '..

我希望使用JavaScript检查所选文本中是否有特定标记。本质上,如果文本已经是粗体的,它也会决定是否取消绑定文本(这是一个学习项目,所以我不打算使用现有的WYSIWYG文本编辑器)

因此,基本上,我有一个可编辑的“div”,然后在旁边有另一个div,旁边有按钮来设置字体样式。以下是HTML代码:

<div class = 'edit_menu'>
<a id = 'b' title = 'Bold'><image class = 'icon' src = '../images/icons/bold.jpeg' id = 'bold'></image></a><br>
<a id = 'i' title = 'Italicize'><image class = 'icon' src = '../images/icons/italicize.jpeg' id = 'italicize'></image></a><br>
<a id = 'u' title = 'Underline'><image class = 'icon' src = '../images/icons/underline.jpg' id = 'underline'></image></a><br>
</div>
Chrome返回的错误是:

Error: Object [Object Range] has no method getElementsByTagName

因此,我想我需要在范围的末尾添加一些内容?

contenteditable的粗体功能已经使用相同的参数切换粗体的开和关,所以您不需要这样做。事实上,本机行为很好地处理了一些粗体和一些不粗体的情况,或者只选择了标记的一部分的情况。你真的不想重新发明和调试那些东西。。。如果您有范围,请查看.startNode或.extractContents()。@dandavis抱歉,我不明白。您是说您可以在不使用js的情况下切换粗体还是…您没有在编辑器中使用document.execCommand?是的,[crlt]+[b]在某些浏览器中切换粗体选择。对不起,我是JS新手,什么是execCommand?我读过它,但我真的从来没有理解过它……好吧,如果你对execCommand有着根深蒂固的仇恨,并且有很好的理由去重新发明轮子,我会说去吧。但既然你不这样做,那么在你写下另一行你不需要的JS之前,停止一切,并仔细阅读。js中的wysiwyg编辑器可以从几行js开始,主要用于定义按钮动作。再多的话,你就是在浪费你的努力。
Error: Object [Object Range] has no method getElementsByTagName