单击按钮时,我试图将(显示)* 样式从用户输入文本区域更改为 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>



正则表达式解释:
\* - 文字 * (正则表达式中的 * 表示任何字符).*? - 任何字符() - 稍后可以与 $1$2 一起使用的捕获组...( (.*?) - 捕获任何字符)/ - RegEx 分隔符(可以是任何字符
\*(.*?)\* - 匹配字符 * ,而不是任何字符直到找到 *

关于javascript - 如何通过javascript将*更改为斜体?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39221509/

10-12 14:07