我正在从json文件动态地生成一些带有循环的按钮,并附加了onclick事件,该事件将一些值和数组传递给函数。
东西不起作用,因为我得到在点击该按钮时控制台一个通用的“意外标识符”误差;如果我用字符串或数字替换数组,脚本将起作用,这意味着在传递数组或数组本身的方式中一定存在问题。
这是什么的按钮的HTML输出的样子(为什么有两个[对象的对象]):
<button onclick="myFunction(1,'string',{[object Object],[object Object]})">Click me</button>
产生于
var button = '<button onclick="myFunction('+otherArray.value1+',\''+otherArray.string1+'\',{'+myArray+'})">Click me</button>';
这是什么阵列看起来像在铬控制台刚刚生成的按钮之前:
(2) [{…}, {…}]
0: {param1: "1", param2: "text"}
1: {param1: "2", param2: "more text"}
length: 2
__proto__: Array(0)
有什么建议吗? 谢谢
答案 0 :(得分:1)
看到[object Object]
的原因是因为如何分配onclick
,对于这些值,将调用toString
方法,因此输出为[object Object]
。
我可以给您的第一个建议是,在这些情况下,您必须分配此类属性,请使用addEventListener
,而不是以这种方式创建硬编码的元素。
因此,您的情况如下:
var button = document.createElement("button");
var t = document.createTextNode("Click me");
button.appendChild(t);
button.addEventListener('click', () => {
myFunction(otherArray.value1, otherArray.string1, { myArray });
});
// then append the button where you want to