2016-08-03 43 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;