3

在我的 javascript 代码中,我有一个包含字符串的变量。字符串中包含 ' 或引号。例子

var name= "hi's";

我正在代码中动态创建链接。它被写成一个字符串,即一个变量content将被动态地用于在 html 页面上创建一个链接。

content= '<a onclick="javascript:fun(\'' + name + '\');">'

这里给出的问题是变量中的引号name完成了内容中的字符串。因此内容的其余部分无法识别..

var name = 'hi"s'; 如果其中存在双引号,则会出现类似的问题。

请帮助

4

1 回答 1

3

这就是您如何正确创建锚点并完全避免逃避任何东西的需要。

var name = "Hi's",
anchor = document.createElement('a');

// should have an href
// links will be displayed differently by some browsers without it
anchor.href = '#';
// using onclick for pragmatic reasons
anchor.onclick = function() {
    fun(name);
    return false;
}
anchor.innerHTML = 'hello world';

// later
mydiv.appendChild(anchor);

顺便说一句,该onclick属性根本不应该以开头"javascript:";这已经暗示了。

更新

如果你仍然对内联版本感兴趣,变量需要两步编码:

  1. 首先是正确序列化变量;我会用JSON.stringify()

  2. 二是HTML转义;最简单的形式是简单地用正确的编码值替换双引号。

例如:

var content = '<a href="#" onclick="fun(' + 
    JSON.serialize(name).replace(/"/g, '&quot;') + ');">hello</a>';
于 2013-06-12T09:39:19.573 回答