我希望使用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>
我的JavaScript(仅用于粗体功能):
document.getElementById('b').onclick = function() {
if (window.getSelection().rangeCount != 0)
{
var select = window.getSelection();
var selection = select.getRangeAt(0);
if (selection.contains(selection.getElementsByTagName('b')))
{
getElementsByTagName('b').parentNode.removeChild(getElementsByTagName('b'));
}
else {
var selectedText = selection.cloneContents();
var span = document.createElement('b');
span.appendChild(selectedText);
selection.insertNode(span);
}
}
};
Chrome回放的错误是:
Error: Object [Object Range] has no method getElementsByTagName
所以,我想我需要在范围的末尾添加一些东西?