信息:我有一些javascript代码,我将在下面显示,我有引号问题。
html = [];
style = 'class=odd';
html.push('<li '+style+' onclick=SelectItem("'+ele.id+'","'+idItem+'","'+dsItem+'","'+qtItem+'"); >'+id+' - '+$iObjItensListaVenda.result.ds_item[i]+'</li>');
我有来自JSON对象的字符串,如上所示。
问题:但是当我尝试将其作为函数参数放在onClick
元素的<li>
事件上时,我生成的html <li>
元素变得完全没有格式化:
<li natural,"150");="" white="" american="" onclick="SelectItem("descItem1","2",TELHA" class="odd">00002 - TELHA AMERICAN WHITE NATURAL</li>
我想要什么:我需要一个类似函数的解决方案,可能已经存在于jQuery中,引用我的字符串。就像QuoteStr("s t r i n g");
成为""s t r i n g""
。
也许你在抱怨:
ele
是一个html <input>
元素。 idItem
仅包含数字,它们来自JSON对象。 dsItem
是一个包含Item Description的字符串,它也来自JSON对象。 qtItem
仅包含数字,它是项目的数量,它也来自JSON。答案 0 :(得分:2)
理智的解决方案是使用jQuery to build the element并绑定事件处理程序,而不是构建HTML字符串:
var $li = $('<li />', {
"class": "odd",
on: {
click: function() {
SelectItem(ele.id, idItem, dsItem, qtItem);
}
},
text: id + ' - ' + $iObjItensListaVenda.result.ds_item[i]
});
如果您在循环中执行此操作并且变量最终具有错误的值,请参阅JavaScript closure inside loops – simple practical example。另外,您可以使用jQuery的.data
API来设置和获取这些值。
答案 1 :(得分:0)
在\"
'
而不是onClick
$(".container").append("<a href='javascript:void(0)' onClick=\"showField('"+data.name+"','"+data.text+"');\">Edit</a>");
答案 2 :(得分:0)
您始终可以使用反斜杠来转义引号:
console.log('te\'st'); // te'st
console.log("te\"st"); // te"st
你可以为你的字符串做同样的事情,但我建议你把整个事情改写成更有用的东西。我的意思是不使用字符串来构建对象,而是直接构建对象。
例如:
var li = document.createElement('li');
li.className = myClass;
li.onclick = function(){/*...*/};
使用jQuery会更容易。
答案 3 :(得分:0)
您可以通过使用反斜杠转义字符串来使用字符串中的引号。
var text = "s t r i n g";
"\"" + text + "\"" === "\"s t r i n g\"";
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String