Javascript:如何在文本选择周围插入标签?

时间:2016-01-30 18:08:29

标签: javascript contenteditable

我想创建一个带有contenteditable div的WYSIWYG HTML文本编辑器。

为此,我使用window.getSelection()来检索所选文本,当我单击一个按钮(按钮粗体)时,我执行一个函数来在所选文本周围添加粗体标签。

但我不知道javascript代码(没有JQuery)添加粗体标签。

这是我的代码:

<input type="button" value="B" style="font-weight:bold;" onclick='add_tags("b");'>

<div id="container_contenteditable" class="container_contenteditable" contenteditable></div>

<script type="text/javascript">

function add_tags(tags)
{
    container_contenteditable = document.getElementById("container_contenteditable");

    //Retrieve the selected text :
    sel = window.getSelection();
}

</script>

4 个答案:

答案 0 :(得分:6)

它实际上比你想象的更简单:

var el = $(this).closest('tr')
        .nextAll(":has(input):first")
        .find('input')
        .prop("disabled", false)
        .removeClass("disabled");
function add_tags(tags)
{
    document.execCommand('bold');
}

答案 1 :(得分:3)

编写自己的编辑器不是那种噩梦 - 但它需要花费大量时间,注重细节和学习。

当我写下我的时候,我最终将所有样式转换为跨度 - 最后它更容易并且在浏览器之间提供一致性。

因此,对于跨度,您可以用(例如:) <span style="font-weight:bold">your selected text</span>

替换当前选择

工作待遇......

答案 2 :(得分:2)

设置&#34; container_contenteditable&#34;作为id属性,因为您使用的是getElementById。

您可以使用替换功能替换所选文本。这是修复。

&#13;
&#13;
function add_tags(tags)
{
    var container_contenteditable = document.getElementById("container_contenteditable");

    //Retrieve the selected text :
    var sel = window.getSelection();
    var text = container_contenteditable.innerHTML;
  container_contenteditable.innerHTML = text.replace(sel, '<b>'+sel+'</b>');
}
&#13;
<input type="button" value="B" style="font-weight:bold;" onclick='add_tags("b");'>

<div id="container_contenteditable" contenteditable>Make the name siva to bold</div>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

你可以在选择中包装<b> - 标签:

此外,您的HTML应如下所示:

<input type="button" value="B" style="font-weight:bold;" onclick='add_tags("b");'>

<div id="container_contenteditable" contenteditable>TestTextTest</div>

JavaScript:

    function add_tags(tags) {
  container_contenteditable = document.getElementById("container_contenteditable");
  //Retrieve the selected text :
  sel = window.getSelection();
  //Check if selection does contain something
  if (sel != "") {
    //set the innerHTML of container_contenteditable
    //we're just wrapping a <b>-tag around the selected text
    container_contenteditable.innerHTML = "<b>" + sel + "</b>";
  } else {
    //if the selected text was blank
    alert("Nothing selected.");
  }
}