Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当用户输入单个报价时,JS中断_Javascript_Html - Fatal编程技术网

Javascript 当用户输入单个报价时,JS中断

Javascript 当用户输入单个报价时,JS中断,javascript,html,Javascript,Html,我有一个带有和的页面,在中有带有标记标记的文本。我想删除那些标记标签,我有一个函数来完成它 页面示例如下: <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> </di

我有一个带有
的页面,在
中有带有标记标记的文本。我想删除那些标记标签,我有一个函数来完成它

页面示例如下:

<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");
     }
  }
}
函数移除标记(标记名,颜色){
var notes=document.getElementsByClassName(“NoteOp”);
对于(变量i=0;i
标记名
没有
颜色
YelColBox
。我得到的错误是 参数列表测试后未捕获的语法错误:丢失)。html:1

这毫无意义,因为test.html第一行的代码是


如何修复此错误?

使用
'代替单词中的单引号。在将
标记提交到dom后,您可以删除
元素

然后在你的函数中如下所示:

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]);
    }
}

看看这是否有效。

你能显示你调用方法的行吗?我认为更好的方法是添加一个唯一的类,使用javascript
className
添加类<代码>文本内容
更改text@kiro112我无法使用textContent,因为它会删除其中的所有标记,并将删除所有其他标记标记。问题不会发生在
removeMark
函数中。问题出在您调用它的地方,您需要在那里转义引号。您的代码看起来像
removeMark('had't','YelColBox')
。它需要是
removeMark('wad't','YelColBox')
removeMark('wad'not''YelColBox')
是输入包含单引号的单词的用户,而不是编码者。“当用户输入单引号时,JS中断”。所以removeMark必须在继续之前截取单引号,或者编码器禁止输入单引号,可能是编码?@statosdotcom-该示例已将其直接嵌入HTML中。谢谢你,对不起:你是对的,但我认为这是Hawkeye向我们展示的方式。。。谢谢,如果这个例子只是为了说明,而内容是用户输入的,那么这个解决方案可能没有帮助。不管怎样,你是想帮忙的。这很重要。他想保留
元素的内容,他只想删除标记。@Barmar:更新了代码。你认为这样行吗?请看我对这个问题的评论:语法错误在调用者中,它与
removeMark
定义无关。