Jquery:.replace字符串的一部分返回"意外的标记ILLEGAL"

时间:2016-01-16 16:34:37

标签: jquery

我已经google了,并且浏览了这个真的,非常奇怪但已知错误了一段时间了,但我无法弄清楚这段代码的错误,以及为什么它会给我错误&#34 ;意外的令牌ILLEGAL"。

失败的一行就是这一行:

var temp = existingTags.replace(tagToRemove, '');​

代码:

onDelete: function (item) {
    var existingTags = $('.lblTags').html();
     var tagToRemove = item.name + ',';
     var temp = existingTags.replace(tagToRemove, '');​
     $('.lblTags').text(temp);
}

数据:

existingTags = "Oddity,Strange,Weird,Ohyeah,"   
tagToRemove = "Weird,"

4 个答案:

答案 0 :(得分:4)

在该行的末尾有一个不可见(“零宽度空格”)字符,使该行无效。请注意,如果您将光标放在分号后面并向右然后向左,则光标似乎根本不会移动。

当您复制代码时,尤其是某些网站,可能会发生这种情况。

您可以删除有问题的字符,或者如果您复制并粘贴下面看起来相同但已经清理过的代码,它将消除错误。

onDelete: function (item) {
    var existingTags = $('.lblTags').html();
    var tagToRemove = item.name + ',';
    var temp = existingTags.replace(tagToRemove, ''); // zero-width space removed here
    $('.lblTags').text(temp);
}

根据Andreas的评论,如果您粘贴代码{j},则jsfiddle将以红色显示有问题的字符。

答案 1 :(得分:0)

更改

var tagToRemove = item.name + ',';

var tagToRemove = new RegExp(item.name.toLowerCase() + ",", "gi");

完整的例子! https://jsfiddle.net/luizcarlosfaria/L8hph6hr/

答案 2 :(得分:-1)

我尝试添加有问题的代码,它对我有用。

你需要做的就是删除&#34 ;;"之后的最后一个字符。这个字符是不可见的

var temp = existingTags.replace(tagToRemove,'');

检查以下代码:



var existingTags = "Oddity,Strange,Weird,Ohyeah,";
var tagToRemove = "Weird,";

var temp = existingTags.replace(tagToRemove, '');

document.getElementById("result").innerHTML = temp;
   
console.log(temp);

<div id="result"></div>
&#13;
&#13;
&#13;

答案 3 :(得分:-2)

您的问题不是代码本身,而是代码的保存方式。 尝试使用notepadd ++或其他内容来更改编码,并查看代码组成的字符。

摆脱奇怪的字符会导致你的javascript环境引发非法令牌错误。