字符串内的单引号表示不正确

时间:2017-01-15 09:11:37

标签: javascript html

我有一个HTML按钮,在onclick事件中我得到的参数很少。我的论点是这样的:

javascript:Email('Andy.n@gmail.com' ,'19','1','2017','106 O'Horg St, Del-5th floor boardroom')

现在问题在于此值'106 O'Horg St, Del-5th floor boardroom',

由于我的值O',我的完整字符串已损坏,我无法使用它。任何人都可以帮我解决这个问题吗? 这是我的示例代码,我正在进行数据和评估。

onclick="javascript:Email(\''+facilityOwnerEmail+'\' ,\''+i+'\',\''+monthNumber+'\',\''+yearnum+'\',\''+locArray[j][0]+'\')"

我无法用任何其他字符替换',因为它与后端的数据不匹配。

2 个答案:

答案 0 :(得分:3)

一些选择:

改为使用双引号:

"106 O'Horg  St, Del-5th floor boardroom"

改为使用反向标记(ES6 +):

`106 O'Horg  St, Del-5th floor boardroom`

使用\

逃避有问题的单引号
'106 O\'Horg  St, Del-5th floor boardroom'

答案 1 :(得分:0)

您需要在该字符串中转义引号,这可能会变得相当复杂并导致难以阅读的代码。我建议使用完全不同的模式来创建这些可点击元素,而不是为此,

  • 使用DOM API创建元素,而不是生成HTML;
  • 不使用onclick属性,而是通过代码添加点击监听器(使用.addEventListener()

如果您这样做,您将不必担心转义引号,因为没有使用此工作方法评估字符串。

这是一个小例子,其中一个这样的元素被添加到文档中:

// Dummy Email implementation: you would use your own of course:
function Email(a, b, c, d, e) {
    console.log('calling Email with following arguments:');
    console.log([a, b, c, d, e].join(','));
}

// Sample data:
var facilityOwnerEmail = 'Andy.n@gmail.com',
    i = 19,
    monthNumber = 1,
    yearnum = 2017,
    j = 0,
    locArray = [["106 O'Horg St, Del-5th floor boardroom"]];

// 1. generate clickable element via the DOM API, without the onclick attribute:
var div = document.createElement('div');
div.textContent = 'click here';
// 2. Provide the click handler dynamically, binding the arguments to a copy of the Email function
//   -- now there is no problem with quotes anymore:
div.addEventListener('click', Email.bind(null, facilityOwnerEmail,i,monthNumber,yearnum,locArray[j][0]));
// 3. add that element to your document, at the desired place (I chose body as example):
document.body.appendChild(div);
// For any other such elements to generate, repeat the above three steps
// ...