我有一个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]+'\')"
我无法用任何其他字符替换',因为它与后端的数据不匹配。
答案 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)
您需要在该字符串中转义引号,这可能会变得相当复杂并导致难以阅读的代码。我建议使用完全不同的模式来创建这些可点击元素,而不是为此,
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
// ...