【发布时间】:2012-05-01 06:29:08
【问题描述】:
快速提问,我想将一些 Markdown HTML 内容从双星号转换为粗体。
我得到的错误是:`Uncaught TypeError: Cannot call method 'replace' of null '
这是 jsfiddle:http://jsfiddle.net/fz5ZT/9/
这是 HTML:
<div class="comments">comment 1** is good**</div>
<div class="comments">comment 2**is bad**</div>
这是 JS:
function markdown(markdownable){
var boldMatch = markdownable.match(/\*\*[A-Za-z0-9]+\*\*/gim),
boldReplace = boldMatch.replace(/\*\*[A-z0-9]+\*\*/gim, '<span style="font- weight:bold;color:blue;">'+boldMatch+'</span>'),
markdownable = markdownable.replace(boldMatch, boldReplace),
markdownable = markdownable.replace(/\*\*/gi, "");
return markdownable;
}
$('.comments').each(function(){
var markdownable=$(this).html(), comments=markdown(markdownable);
});
如果您能提供帮助,我将不胜感激,
谢谢, 时间
更新谢谢大家!请参阅此以获得工作演示:http://jsfiddle.net/fz5ZT/30/
【问题讨论】:
-
如果粗体 rexep 不匹配,“boldMatch”将为空。 “null”没有(原型)属性“replace”可以调用 - 抛出错误。
-
感谢Bergi,但是如果我将变量
mardownable包含在双星号文本中,为什么“boldMatch”为空?不应该匹配吗? -
不,markdownable 中有一个空格与您的正则表达式都不匹配。
标签: javascript jquery function replace match