我正在尝试通过添加一些值来创建动态锚标记。但是在特殊字符的情况下,代码正在破坏:
'<a href="#" onclick="openCI(\''+var1+'\',\''+ var2 +'\',\''+ var3 +'\',\''+ var4 +'\')">' + LINK_URL + '</a>'
在上述情况下,当LINK_URL值包含特殊字符时,代码会中断。有什么方法可以解决这个问题吗?
我在LINK_URL中尝试了以下值:!@#$%^&amp; *() - = + _&#39 ;;&#34;:。,&lt;&gt; /?
如果我在javascript中使用escape()
函数,则显示的值与实际值不匹配:%21 @%23%24%25%5E%26 *%28%29-%3D + _%27 %3B%3A%2C%3C%3E /%3F
如何解析此值并按原样显示?
答案 0 :(得分:1)
您只需要担心<>&"
个字符。您可以将这些字符替换为等效的html。
LINK_URL.replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """);
或者你可以用更优雅的方式做到:
String.prototype.htmlEscape = function() {
return this.replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """);
}
LINK_URL.htmlEscape();
答案 1 :(得分:0)
只需将您的href
元素或变量作为字符串推送到数组中,就像这样
var arr=[];
arr.push('"');
arr.push("@");
arr.push("$");
arr.push("%");
arr.push('"');
console.log(arr.join(""));
然后在您的标记
中附加数组arr