简体   繁体   English

使用javascript构造HTML并传递变量(onclick函数) - 引用/双引语法问题

[英]Constructing HTML using javascript and passing a variable (onclick function) - quote / double-quote syntax issue

I am constructing an HTML snippet with a JavaScript function that injects into a div. 我正在构建一个带有JavaScript函数的HTML片段,该函数会注入div。

Can't figure out how to do the quote / double quote wrapping for a passed variable dynamically. 无法弄清楚如何动态地对传递的变量进行引用/双引号包装。

var vLC = "zh-CN"

var vHtml = "<input type='radio' id='rbtn1' onclick='renderList(" + vLC + ");' />";

This code renders: onclick="renderList(zh-CN);" 此代码呈现:onclick =“renderList(zh-CN);”

I need it to render: onclick="renderList('zh-CN');" 我需要它来渲染:onclick =“renderList('zh-CN');”

Any geniuses out there that know the Code? 那些知道守则的天才?

Don't modify your document by mashing strings together. 不要通过将字符串混合在一起来修改文档。 It is more pain to maintain then it is worth. 维持它更痛苦然后它是值得的。

var element = document.createElement('input');
element.type = "radio";
element.id = "rbtn1";
element.addEventListener('click', function () {
    renderList(vLC);
});

This is a general rule. 这是一般规则。 If you are dealing with one language (programming, templating, data serialisation, whatever) inside another you meet pain. 如果你在另一种语言中处理一种语言(编程,模板,数据序列化等等),你会遇到痛苦。 When you add another layer (JS inside HTML inside JS here) you get horrible pain. 当你在这里添加另一个层(JS里面的JS里面的JS)时,你会感到非常痛苦。

Always either use an API to build the document, or build each layer in turn and add it to the next after running it through an escaping routine. 始终要么使用API​​来构建文档,要么依次构建每个图层,并在通过转义例程运行后将其添加到下一个图层。

var vLC = "zh-CN"

var vHtml = "<input type=\"radio\" id=\"rbtn1\" onclick=\"renderList('" + vLC + "');\" />";

www.jsbin.com to the rescue! www.jsbin.com救援! - Thanks to Remy Sharp @rem :-D - 感谢Remy Sharp @rem :-D

Solution was to use a variable for the onclick action. 解决方案是使用变量进行onclick操作。

var vLanguageCode = "us-EN";
var vOnclick = 'renderList("' + vLanguageCode + '")';
vHtml = "<input type='radio' id='rbtn1' onclick=" + vOnclick + " />";

Simplify, simplify... 简化,简化......

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM