首页 > 解决方案 > 光标在替换时卡在上标或下标中

问题描述

我有两个按钮将选定的文本转换为上标或下标。当我将文本转换为上标时,我的光标卡在上标行高中并且不会恢复到正常行高,并且下标也出现相同的错误。如果有人可以帮助我解决此错误,请。谢谢你。

function getText(tag) {
  var text = document.getElementsByClassName("div-input")[0].innerHTML;
  console.log(text);
  var selected = "";
  if (window.getSelection) {
    selected = window.getSelection().toString();
  } else if (document.selection && document.selection.type != "Control") {
    selected = document.selection.createRange().text;
  }
  var newnode = document.createElement(tag);
  var node = document.createTextNode(selected);
  newnode.appendChild(node);

  replaceSelectedText(newnode);
}

function replaceSelectedText(replacementText) {
  var sel, range;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.rangeCount) {
      range = sel.getRangeAt(0);
      range.deleteContents();
      range.insertNode(replacementText);
    }
  } else if (document.selection && document.selection.createRange) {
    range = document.selection.createRange();
    range.text = replacementText;
  }
}
<html>

<head>
  <title>Question Paper Website</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <script src="main.js"></script>
</head>

<body>
  <button class="superscript btn" onclick="getText('sup')">S<sup>2</sup></button>
  <button class="subscript btn" onclick="getText('sub')">S<sub>2</sub></button>
  <div contentEditable=true class="div-input" id="questionData" style="display:block;height:300px;width:300px;border:1px solid;"></div>
</body>

</html>

标签: javascripthtml

解决方案


推荐阅读