基本上,我试图通过onclick将json-array传递给函数
<button
onclick='showAccountOverviewModal("<%= accounts[j].name %>", `<%= accounts[j].bills%>`)'>
Click Me
</button>
但是,当我尝试通过JSON.parse解析字符串时,我意识到,键和值都没有引号。有什么“好的”方法可以解决此问题,还是需要使用正则表达式?
最诚挚的问候
编辑
这是相应的功能:
function showAccountOverviewModal(accountName, accountBills) {
$("#accountModalOverviewTitle").text(accountName);
accountBills = JSON.parse(accountBills);
console.log(accountBills);
accountBills.forEach(bill => {
console.log(bill);
});
}
答案 0 :(得分:1)
似乎您可能正在传递一个javascript数组(已解析),而不是JSON数组(表示该数组的字符串)。如果是这样,请在JSON.parse
之前运行
console.log(Array.isArray(accountBills))
应打印true
。如果它实际上是JSON,则将打印false
并运行
console.log(typeof accountBills)
将打印string
。
如果它是一个数组,则不需要解析它,删除JSON.parse
行应该可以使它按预期工作。
答案 1 :(得分:1)
将使用data- *属性重写代码。如果您不希望使用这种方法,则可以忽略。
html
<button class="showaccountmodal"
data-accountName="<%= accounts[j].name %>
data-bill="<%= accounts[j].bills %>">Click Me</button>
jquery
$(".showaccountmodal").on('click', function() {
var accountname = $(this).data('accountName');
var bill = $(this).data('bill');
console.log(accountname);
console.log(bill);
accountBills.forEach(bill => {
console.log(bill);
});
} );
中存储json对象的参考