引号和函数内的引号

时间:2014-01-23 18:49:57

标签: javascript

由于系统的设置方式,我需要将其作为onclick:

var name = "o'hanrahan";

var htmlData = '<ul class="">';
htmlData += '<li onclick="alert('hello ' + name)">Enter</li>';
htmlData += '</ul>';

return htmlData;

我简化了这个例子。姓名将会改变,可能是任何事情。

如何在引号内引用js?

2 个答案:

答案 0 :(得分:2)

你必须逃脱它们:

var name = "o\\'hanrahan";

var htmlData = '<ul class="">';
htmlData += '<li onclick="alert(\'hello ' + name + '\')">Enter</li>';
htmlData += '</ul>';

return htmlData;

当你插入一个带有相同引号的字符串时,必须将其转义两次

FIDDLE

更好的方法是

var name = "o'hanrahan";

var ul = document.createElement('ul');
var li = document.createElement('li');
li.addEventListener('click', function() {
    alert(name);
}, false);
li.innerHTML = 'Enter'

ul.appendChild(li)

return ul;

FIDDLE

这样名字无关紧要

答案 1 :(得分:2)

你需要使用\来转义'',并且名称的渲染字符串必须在单引号内。

htmlData += '<li onclick="alert('hello ' + name)">Enter</li>';

需要

htmlData += '<li onclick="alert(\'hello ' + name.replace(/'/g,"\\'") + '\')">Enter</li>';

现在,如果名称中包含",则会出现更多问题。

JSFiddle

如果名称中包含",则需要将"替换为&quot;