如何转义 JavaScript 中的单引号或双引号?

How to escape single or double quote in JavaScript?

我正在尝试用 \' 替换引号 (') 以转义字符串中的转义引号或双引号

<ul id="list">

</ul>
<button id="sethrefbtn" onclick="setlink();">Set Link</button>

function setlink(){    
    var data = {  
        playerID : 102458,
        playername: "Real Madrid's cristiano Ronalado"
    }  
listring= "<li><a href='SearchServlet?q=" + data.playername.replace(/'/g, "\'"); + "&playerid=" + data.playerID + "&page=1#pg0'>"+ data.playername +"</a></li>";      

 $("#list").append(listring);

}

这是fiddle:fiddle

所需的输出应该是:

<a href="SearchServlet?q=Real Madrid's cristiano ronalado&playerid=102458&page=1#pg0">Real Madrid's cristiano Ronalado</a>

你的问题是由于它在 HTML 属性中引起的(所以你需要将它转换为 HTML 字符引用而不是转义它)。您应该通过使用 DOM 而不是字符串混搭来构建您的 HTML.

来处理这个问题

但是,在这种特殊情况下,您将它放在 URL 中,因此您应该先将其转义 URL 秒。

您可以使用 encodeURIComponent 来做到这一点,但由于您正在构建一个完整的查询字符串并使用 jQuery,您可以改用 param

function setlink() {
  var data = {
    playerid: 102458,
    q: "Real Madrid's cristiano Ronalado",
    page: 1
  }

  var url = "SearchServlet?" + $.param(data);

  var li = $("<li />").append(
    $("<a />").text(data.q).attr('href', url)
  );

  $("#list").append(li);

}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="list">

</ul>
<button id="sethrefbtn" onclick="setlink();">Set Link</button>

listring= "<li><a href='SearchServlet?q=" + data.playername.replace(/'/g, "\'") + "&playerid=" + data.playerID + "&page=1#pg0'>"+ data.playername +"</a></li>";

只需在代码中替换上面的语句即可。 您的代码中语句中间有一个分号。