JavaScript中需要第三种引号

Need third kind of quotation marks in JavaScript

我正在使用 javascript 更改 HTML。因此,我有一个保存 HTML 代码的字符串,因为它是在 for 循环中生成的。其中有一个 <a> 标签。在 <a> 标签中,我想添加一个 onClick 来调用一个函数,该函数的参数保存在 javascript 变量中。

let parameter = "p1";
let to_html_String = "<a href='#' onClick='create_sprite_window("+parameter+")'></a>";
document.getElementById('sidebar_left_sprites').innerHTML = to_html_String;

这不起作用,因为它会产生以下结果 html:

<a href='#' onClick='create_sprite_window(p1)'></a>

不行,因为p1前后没有引号。 我的问题是我需要第三种引号才能解决这个问题。 在下面的示例中,我将在需要引号的地方使用#:

let parameter = "p1";
let to_html_String = "<a href='#' onClick='create_sprite_window(#"+parameter+"#)'></a>";
document.getElementById('sidebar_left_sprites').innerHTML = to_html_String;

我不能使用单引号,因为它会结束 onClick,我不能使用双引号,因为它会结束 to_html_String。

是否有第三个引号或有其他方法可以解决这个问题?

这会起作用

"<a href='#' onClick='create_sprite_window('"+parameter+"')></a>";

如果您使用的是 ES6,则可以像

这样使用 template strings
let foo = `Hello "World's"`;

无论如何 - 你为什么不转义你的引号?

let bar = 'hello \' world';
let buz = "hello \" world";

不要使用 JavaScript 构建 HTML。 DOM API 可以让您干净安全地构建文档节点,甚至可以附加事件侦听器,因此您不必在 HTML 中构建 JavaScript 字符串在 JavaScript.

建造
let parameter = "p1";

const link = document.createElement('a');
link.href = '#';
link.textContent = 'maybe you want something in this link?';
link.addEventListener('click', function (e) {
    e.preventDefault();
    create_sprite_window(parameter);
});

document.getElementById('sidebar_left_sprites')
    .appendChild(link);

/* 使用\'与函数单引号区分*/

让参数="p1"; 让 to_html_String = ""; document.getElementById('sidebar_left_sprites').innerHTML = to_html_String;