我有一个事件,当触发时调用如下函数:
<a href="javascript:fav.delete(\''+addslashes(value.title)+'\')">
函数接收字符串标题作为参数,所有工作正常,但引号在字符串内。
我使用了其他主题的功能:Escaping String in Javascript
但是在点击链接时控制台出现以下错误:
未捕获的SyntaxError:无效或意外的令牌
fav.delete(&#39; Y-Splitter 1/2 \
我认为字符串close href属性中引用的第一次出现。
我该如何避免这种情况?
答案 0 :(得分:1)
您将PHP与HTML结合使用,您的问题与Javascript和HTML有关。
HTML + PHP中的解决方案:
<a href="javascript:fav.delete('<?php echo addslashes($valueTitle); ?>')">
$valueTitle
不存在,因此您需要将其设置为使用。
也许您需要在javascript中使用等效的addslashes
:
function addslashes(str) {
return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0')
}
使用类似:
<a href="javascript:fav.delete(addslashes(value.title))">...</a>
完整示例(try here):
function addslashes(str) {
return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
};
var fav = {
'delete': function(str) {
alert('Escape string :' + str);
}
};
var value = {
title: "You can't touch it!"
}
&#13;
<a href="#" onclick="fav.delete(addslashes(value.title))">Click here</a>
&#13;
当您使用函数而不是
fv.delete(addslashes(...))
等其他函数时,您不需要应用单引号或双引号。
答案 1 :(得分:-1)
我会这样做:
xs:simpleType
这样你就可以在调用中传递一个变量而不是渲染字符串,导致浏览器在该字符串中的第一个双引号处停止。