我正在尝试为特定单词添加跨度,如下所示:
var value = "eror";
var template = "/(" + value + ")/g";
$("#content").html($("#content").html().replace(template, '<span class="spell_error">$1</span>'));
这是我的小提琴。我尝试使用我在这里看到的解决方案,但它似乎不起作用。知道为什么吗?谢谢
我正在尝试为特定单词添加跨度,如下所示:
var value = "eror";
var template = "/(" + value + ")/g";
$("#content").html($("#content").html().replace(template, '<span class="spell_error">$1</span>'));
这是我的小提琴。我尝试使用我在这里看到的解决方案,但它似乎不起作用。知道为什么吗?谢谢
您正在混淆正则表达式文字和字符串。
使用它来创建您的正则表达式:
var template = new RegExp("(" + value + ")", 'g');
正则表达式文字是这样的:
/(something)/
没有报价。但是因为它是一个文字,你不能用你的代码来构建它,所以这就是你必须使用RegExp
构造函数的原因。
附注:您的替换物会变得更轻,更重要的是,通过使用将函数作为回调的html变体更干燥:
$("#content").html(function(_,html){
return html.replace(template, '<span class="spell_error">$1</span>')
});