我正在使用javascript更改HTML。因此,我有一个保存HTML代码的String,因为它是在for循环中生成的。其中有一个<a>
标记。对于<a>
标记,我想添加onClick
,该let parameter = "p1";
let to_html_String = "<a href='#' onClick='create_sprite_window("+parameter+")'></a>";
document.getElementById('sidebar_left_sprites').innerHTML = to_html_String;
使用保存在javascript变量中的参数调用函数。
<a href='#' onClick='create_sprite_window(p1)'></a>
这不起作用,因为它会产生以下html:
let parameter = "p1";
let to_html_String = "<a href='#' onClick='create_sprite_window(#"+parameter+"#)'></a>";
document.getElementById('sidebar_left_sprites').innerHTML = to_html_String;
它不起作用,因为p1之前和之后没有引号。 我的问题是我需要第三种引号才能解决这个问题。 在下面的例子中,我将使用#,我需要这些引号:
// Initialize the app with a service account, granting admin privileges
FirebaseOptions options = new FirebaseOptions.Builder()
.setDatabaseUrl("https://databaseName.firebaseio.com")
.setServiceAccount(new FileInputStream("path/to/serviceAccountCredentials.json"))
.build();
FirebaseApp.initializeApp(options);
我不能使用单个引号,因为它会结束onClick而我不能使用double,因为它会以to_html_String结束。
是否有第三个引号或是否有另一种解决方法?
答案 0 :(得分:3)
如果您正在使用ES6,则可以使用template strings之类的
let foo = `Hello "World's"`;
无论如何 - 为什么你不能逃脱你的引号?
let bar = 'hello \' world';
let buz = "hello \" world";
答案 1 :(得分: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);
答案 2 :(得分:0)
这将有效
"<a href='#' onClick='create_sprite_window('"+parameter+"')></a>";
答案 3 :(得分:0)
/ *使用\&#39;区分功能单引号* /
让参数=&#34; p1&#34 ;; 让to_html_String =&#34;&#34 ;; document.getElementById(&#39; sidebar_left_sprites&#39;)。innerHTML = to_html_String;