【问题标题】:How to make selected text bold/italic/underlined in javascript?如何在javascript中使选定的文本加粗/斜体/下划线?
【发布时间】:2022-01-17 21:22:47
【问题描述】:

我正在尝试开发一个网页,该网页允许用户为学校项目编写自己的笔记,我的想法是让他们使用按钮将文本加粗/斜体/下划线。截至目前,这些按钮正在工作,但它们在文本区域内的所有内容都加粗/斜体/下划线。相反,我希望它以这样一种方式工作,即只有它们突出显示的文本才会加粗/斜体/下划线。 我也想知道怎么做,这样当他们点击粗体按钮时,他们从那时起输入的文字就会变成粗体,当他们再次点击它时,从那时起输入的文字就会出来正常。

<script type="text/javascript">
function boldText(){
    var target = document.getElementById("TextArea");
    if( target.style.fontWeight == "bolder" ) {
        target.style.fontWeight = "normal";
    } else {
        target.style.fontWeight = "bolder";
    }
}



function italicText(){
    var target = document.getElementById("TextArea");
    if( target.style.fontStyle == "italic" ) {
        target.style.fontStyle = "normal";
    } else {
        target.style.fontStyle = "italic";
    }
}

function underlineText(){
    var target = document.getElementById("TextArea");
    if( target.style.textDecoration == "underline" ) {
        target.style.textDecoration = "none";
    } else {
        target.style.textDecoration = "underline";
    }
}
</script>

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

您可以使用execCommand()。此 API 用于开发文本编辑器。 3 个按钮使用了非常通用的 execCommand(),而写作元素是一个普通的 div,启用了属性 contenteditable

片段

<!DOCTYPE html>
<html>

<head>
  <meta charset='utf-8'>
  <style>
   :root {
      font: 400 2ch/1.25 Consolas;
    }
    
    body {
      font-size: 2ch
    }
    
    #editor {
      height: 100px;
      width: 375px;
      margin: 10px auto 0;
    }
    
    fieldset {
      margin: 2px auto 15px;
      width: 375px;
    }
    
    button {
      width: 5ex;
      text-align: center;
      padding: 1px 3px;
    }
  </style>
</head>
<body>
  <fieldset id="editor" contenteditable="true">
    The quick brown fox jumped over the lazy dog.
  </fieldset>
  <fieldset>
    <button class="fontStyle" onclick="document.execCommand('italic',false,null);" title="Italicize Highlighted Text"><i>I</i>
    </button>
    <button class="fontStyle" onclick="document.execCommand( 'bold',false,null);" title="Bold Highlighted Text"><b>B</b>
    </button>
    <button class="fontStyle" onclick="document.execCommand( 'underline',false,null);" title='Underline Highlighted Text'><u>U</u>
    </button>
  </fieldset>
</body>

</html>

【讨论】:

【解决方案2】:

Textarea 不允许这样的事情。我建议你使用类似ckeditor 的东西。它会整齐地为您完成工作。但是如果你仍然想自己做,你需要使用divcontenteditable标签。

祝你好运!

【讨论】:

    【解决方案3】:

    使用textarea 无法实现,请改用divs,因此您可以执行以下操作:

    $(document).ready(function(){
    $('.boldText').click(function(){
       $('.container').toggleClass("bold");
    });
    $('.italicText').click(function(){
      $('.container').toggleClass("italic");
    });
    $('.underlineText').click(function(){
      $('.container').toggleClass("underline");
    });
    
    
    
    });
    div.container {
        width: 300px;
        height: 100px;
        border: 1px solid #ccc;
        padding: 5px;
    }
    .bold{
      font-weight:bold;
    }
    .italic{
      font-style :italic;
    }
    .underline{
     text-decoration: underline;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <div class="container" contentEditable></div><br/>
    <input type="button" class="boldText" value="Bold">
    <input type="button" class="italicText" value="Italic">
    <input type="button" class="underlineText" value="Underline">

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 2020-01-25
      • 2018-11-06
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      相关资源
      最近更新 更多