Javascript构建动态字符串
Javascript build dynamic string
我需要为每个数据构建一个动态字符串。这个字符串将设置一个HTML按钮,当事件点击时将调用一个函数。我对"e"有问题。请看下面的例子:
var stringButton = "";
var txtBtn = "My Button";
for(item in data){
stringButton= "<input id='btn-" + item.id + "' type='button' href='#'
class='fbbutton'" + "value=' " + txtBtn + "' onclick='actionBtn(" + item .id + ", '" +
item .name + "')'>";
}
function actionBtn(id, name) {
//process data.
}
在inspect元素中我看到:
<input id="btn-1599" type="button" href="#" class="fbbutton" value=" My Button "
onclick="actionBtn(1599, " itemName"" jjjj')'="">
问题是创建一个字符串,它调用传递参数字符串的方法。正如我们所看到的,"answers"是错误的。正确的方法是什么?
IMO的正确方法是使用DOM创建方法并正确绑定事件处理程序,而不是使用内联事件处理程序。
var button = document.createElement('input');
button.id = item.id;
button.type = "button";
button.className = "fbbutton";
button.value = txtBtn;
button.onclick = (function(item) {
return function() {
actionBtn(item.id, item.name);
};
}(item));
DOM检查器显示解析器处理后的DOM。它不会向您显示原始来源。诸如"使用了什么样的引号"、"属性的顺序"、"属性之间有多少空格字符"之类的内容不被保留。
在这里,您可以看到所有属性都用双引号括起来,但它们也包含双引号。但是你也会注意到,值内的值是作为字符串的一部分进行颜色编码的(通常为蓝色)。
也就是说,在源代码中,您在属性值周围使用单引号,并在其内部使用单引号。考虑使用双引号来代替一个或另一个(这里转义为'"
),或"
实体。
最后,欢迎来到Stack Overflow。
在你的item.name中肯定有一个'或",所以它切断了你正在构建的字符串。
尝试转义
按照Felix Klings的回答做,或者,如果你经常这样做,使用javascript模板/微模板。
https://developer.mozilla.org/en/JavaScript_templates相关文章:
- javascript在动态Url中匹配并添加字符串
- 从表单中动态生成一个字符串,传递给通过AJAX加载的PHP文件
- 如何将动态构建的字符串作为http头在http.call中与流星一起传递
- 如何在字符串中的值之前删除字符串中的动态数据?/ 使用 Lodash 的 _.trimStart 与动态数据
- 将字符串与integer连接,用作jquery中的变量(创建动态变量)
- 从标记值jquery中删除动态生成的字符串
- 将字符串动态转换为布尔值
- 根据 Array Javascript 中的字符串值动态创建数组名称
- '使用文本区域中的字符串动态填充下拉菜单
- 使用 URL 查询字符串动态显示 Facebook Open Graph
- 获取表单中选中复选框的值以分隔字符串(动态命名)
- 如何从HTML字符串动态添加脚本到网页
- 如何执行一个JavaScript函数,当我发送它的名字作为字符串动态不带参数
- 连接字符串动态Javascript
- 如何通过构建字符串动态访问变量
- 如何将插入的字符串/动态属性传递到Javascript哈希中
- JavaScript 从字符串动态创建多维数组
- 从字符串动态创建Javascript对象,并将对象作为函数的参数
- 在asp.net中添加字符串动态java脚本
- JSP名称参数作为字符串动态显示在同一个JSP页面中