我怎么能改变*斜体javascript

How can I change * to italic by javascript?

本文关键字:斜体 javascript 能改变      更新时间:2023-09-26

当按钮被点击时,我试图改变(显示)*italic样式从用户输入文本区。但是没有什么工作是没有错误的,我认为我的逻辑有点错,但不能再计算了!!

var italic = 0;
$("#btn").click(function(){
        var val = $("#usr").val();
        val.split("").forEach(function(v,i){
            var sts = /'*/g.test(v);
            if(sts){
                if(italic == 1){
                val.substr(0, i) + '</i>' + val.substr(i + 1);
                italic = 0;
                }
                else{
                val.substr(0, i) + '<i>' + val.substr(i + 1);
                italic++;
                }
            }
        });    
        $("#display").html(val);
});
#display {
    background: #aaa;
    width: 30%;
    height: auto;
    border: 1px solid #ded;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<textarea id="usr"></textarea>
<button id="btn">Insert</button>
<div id="display"></div>

使用简单的'*(.*?)'*<i>标签中包装输出:

$(document).ready(function() {
  $('textarea').keyup(function() {
    $('#output').html($(this).val().replace(/'*(.*?)'*/g, '<i>$1</i>'));
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea></textarea>
<div id="output"></div>


正则表达式解释:

'* -字面* (*在RegEx中表示任何字符)
.*? -任意字符
() -捕获组,以后可以与$1, $2…((.*?) -捕获任意字符)
/ - RegEx分隔符(可以是任何字符

)

'*(.*?)'* -匹配字符*,比任何字符直到找到*

由于您正在执行val.split(""), .each循环正在循环每个字符,并且没有必要使用RegExp来测试值,您可以简单地应用v == "*"

我还将数据成员名从italic更改为italicTagOpened,并通过italicTagOpened = !italicTagOpened;控制其状态

如上所述,您正在循环遍历每个字符,我还将有一个数据成员output来附加结果

这是我修改后的函数

var italicTagOpened = false;
$("#btn").click(function(){
  var val = $("#usr").val(),
      output = "";
  val.split("").forEach(function(v,i) {
    //var sts = /'*/g.test(v);
    if(v == "*"){
      if(italicTagOpened) output += "</i>";
      else output += "<i>";
      italicTagOpened = !italicTagOpened;
    } else output += v;
  });    
  $("#display").html(output);
});

你可以试试https://jsfiddle.net/uyjqerg4/1/

var italic = 0;
$("#btn").click(function(){
        var val = $("#usr").val();
        val = val.replace(/'*/g, '<i>*</i>');
        $("#display").html(val);
});
#display {
    background: #aaa;
    width: 30%;
    height: auto;
    border: 1px solid #ded;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<textarea id="usr"></textarea>
<button id="btn">Insert</button>
<div id="display"></div>

你可以使用javascript替换函数,它的第一个参数可以接受正则表达式。反斜杠(')用于转义(因为regex中的*与*的含义不同),g代表'global'。