以字符串形式转义引号

时间:2016-12-01 19:04:13

标签: javascript string

我有一个事件,当触发时调用如下函数:

<a href="javascript:fav.delete(\''+addslashes(value.title)+'\')">

函数接收字符串标题作为参数,所有工作正常,但引号在字符串内。

我使用了其他主题的功能:Escaping String in Javascript

但是在点击链接时控制台出现以下错误:

  

未捕获的SyntaxError:无效或意外的令牌

     

fav.delete(&#39; Y-Splitter 1/2 \

我认为字符串close href属性中引用的第一次出现。

我该如何避免这种情况?

2 个答案:

答案 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):

&#13;
&#13;
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;
&#13;
&#13;

  

当您使用函数而不是fv.delete(addslashes(...))等其他函数时,您不需要应用单引号或双引号。

答案 1 :(得分:-1)

我会这样做:

xs:simpleType

这样你就可以在调用中传递一个变量而不是渲染字符串,导致浏览器在该字符串中的第一个双引号处停止。

相关问题