Info: У меня есть код 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, для Quote my String. Как QuoteStr("string");
стать ""string""
.
Может быть, вы жалуетесь:
ele
является элементом html <input>
.idItem
содержит только числа, они поступают из объекта JSON.dsItem
собой строку, содержащую описание элемента, она также поступает из объекта JSON.qtItem
содержит только числа, это количество элементов, оно также поступает из JSON.Разумным решением было бы использовать jQuery для создания элемента и привязки обработчика события, а не построения строки HTML:
var $li = $('<li />', {
"class": "odd",
on: {
click: function() {
SelectItem(ele.id, idItem, dsItem, qtItem);
}
},
text: id + ' - ' + $iObjItensListaVenda.result.ds_item[i]
});
Если вы делаете это в цикле, а переменные в конечном итоге имеют неправильные значения, см. JavaScript закрытия внутри циклов - простой практический пример. Альтернативой вы можете использовать jQuery .data
API для установки и получения этих значений.
<li>
к желаемому <ul>
? в настоящее время я использую массив для хранения всех <li>
внутри цикла, а затем использую document.getElementById('my_div').innerHTML = array.join('');
положить его внутри ул.
.append
: api.jquery.com/append
Попробуйте \"
вместо '
в onClick
$(".container").append("<a href='javascript:void(0)' onClick=\"showField('"+data.name+"','"+data.text+"');\">Edit</a>");
Вы всегда можете использовать обратную косую черту, чтобы избежать кавычек:
console.log('te\'st'); // te'st
console.log("te\"st"); // te"st
Вы можете сделать то же самое для своей строки, но я бы предложил вам переписать все это в нечто более пригодное для использования. Под этим я подразумеваю не использование строк для создания объектов, а создание объектов напрямую.
Например:
var li = document.createElement('li');
li.className = myClass;
li.onclick = function(){/*...*/};
С jQuery становится еще проще.
Вы можете использовать кавычки в строке, экранируя их с помощью обратной косой черты.
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