JS在用户输入单引号时中断

时间:2016-04-05 01:38:47

标签: javascript html

我的网页上有<div></div><p></p><p></p>内有带标记标记的文字。我想删除那些标记标记,我有一个功能来做到这一点。

页面示例:

<div id="NoteHolder">
        <p class="NoteOp">This breaks with single quotes such as in <mark class="YelColBox" style="font-weight: bold;">didn't</mark></p>
</div>

删除标记的JS函数是:

function removeMark(tagName, Color) {
  var notes = document.getElementsByClassName("NoteOp");
  for (var i = 0; i < notes.length; i++) {
     var n = notes[i];
     if(window.Bold === "No") {
        n.innerHTML = n.innerHTML.replace(new RegExp('<mark class="' + Color +'">(' + tagName + ')</mark>', "gim"), "$1");
     }
     if(window.Bold === "Yes") {
        n.innerHTML = n.innerHTML.replace(new RegExp('<mark class="' + Color +'" style="font-weight: bold;">(' + tagName +')</mark>', "gim"), "$1");
     }
  }
}

tagNamedidn'tColorYelColBox。我得到的错误是 Uncaught SyntaxError: missing ) after argument list test.html:1

这没有任何意义,因为test.html第一行的代码是<!DOCTYPE html>

我该如何修复此错误?

2 个答案:

答案 0 :(得分:0)

在HTML中使用&#39;代替单词中的单引号。

答案 1 :(得分:0)

您可以稍后在呈现到dom中删除mark元素。

然后在你的函数中像这样:

function removeMark(tagName, Color) {
    var elements = document.getElementsByTagName('mark');
    while(elements.length > 0){
        elements[0].parentNode.insertBefore(elements[0].innerHTML, elements[0])
        elements[0].parentNode.removeChild(elements[0]);
    }
}

看看是否有效。