2016-08-03 62 views
0

我正在使用javascript更改HTML。因此,我有一个保存HTML代码的字符串,因为它是在for循环中生成的。其中有一个<a>标签。对于<a>标记,我想添加一个onClick,它使用一个保存在javascript变量中的参数调用一个函数。需要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; 

这不起作用,因为它会prodece以下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。

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

+1

您还可以根据需要使用转义字符\'或'\ –

回答

2

如果您使用ES6,您可以使用template strings

let foo = `Hello "World's"`; 

反正 - 你为什么不只是逃避你的引号?

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

这将工作

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

请勿使用JavaScript构建HTML。 DOM API将使您可以干净而安全地构建文档节点,甚至可以附加事件监听器,因此您不必在使用JavaScript构建的HTML中构建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); 
0

/*使用\”与功能单引号*/

令参数= “P1” 来区分; let to_html_String =“”; document.getElementById('sidebar_left_sprites')。innerHTML = to_html_String;