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