通过onclick属性将javascript数组传递给函数

时间:2019-01-31 19:55:29

标签: javascript arrays function onclick

我正在从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)

有什么建议吗? 谢谢

1 个答案:

答案 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