jquery - 替换这个功能好像不起作用?

标签 jquery html

我正在尝试获取一个文本框来更改 div 中的文本,如果添加方括号,我希望在文本周围添加一个跨度以使文本变为绿色。这是到目前为止我的代码:

function greenText() {
  var textAreaText = $('#textarea').val();
  var replacedText = textAreaText.replace("[", "<span style='color:green'>").replace("]", "</span>");
  $('#preview').html(replacedText);
}

$(function() {
  greenText();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="preview" style="height: 4em; background-color:#eee; padding:10px;"></div>
<textarea id="textarea" rows="4" cols="50" onchange="greenText();" onkeyup="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();">
  At w3schools.com you will learn how to [make a website]. 
</textarea>

greenText函数在页面加载时起作用,但是当我在括号中添加更新preview时div 它将方括号打印到页面而不是 span 标签。有谁知道为什么该函数不替换文本吗?

最佳答案

对于字符串内的多次替换,您需要使用RegEx:

function greenText() {
  var textAreaText = $('#textarea').val();
  var replacedText = textAreaText.replace(/\[/g, "<span style='color:green'>").replace(/\]/g, "</span>");
  $('#preview').html(replacedText);
}

$(function() {
  greenText();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="preview" style="height:400px; background-color:#eee; padding:40px;"></div>
<textarea id="textarea" rows="4" cols="50" onchange="greenText();" onkeyup="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();">
  At w3schools.com you will learn how to [make a website]. 
</textarea>

关于jquery - 替换这个功能好像不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50466411/

相关文章:

javascript - Laravel javascript 分页、打印、提交 View

javascript - 将标题添加到 Bootstrap 响应式模态图像库

javascript - 如何将我的 jQuery 插件应用到动态创建的元素

javascript - 如何从包含 jQuery.get() 的 JavaScript 函数中获取返回值?

javascript - 嵌套 For 循环困惑

javascript - jwplayer 全屏按钮

javascript - 如何将自动播放视频作为网页部分的背景(如此处 - http ://www8. hp.com/in/en/home.html)?

html - 在 HTML 页面中嵌入本地 PDF

javascript - 如何在 JavaScript 中跟踪回调函数事件?

javascript - 同一 HTML 页面中的两个不同版本的 JQuery