我正在动态生成[3,5]
处理程序并使用onclick
方法进行设置。
attr
使用此代码时,var originReference = "myDynamicString";
var stringArray = [];
stringArray.push("Data1");
stringArray.push("Data2");
var objArray = [];
objArray.push({name: "Category 1", y: 10});
objArray.push({name: "Category 2", y: 20});
onclickReference.attr("onclick", "drawChart('" + originReference + "',[" + stringArray + "],[" + objArray + "]); return false;");
未正确传递给处理程序事件,因为我收到错误:
objArray
。仅使用字符串数组(无JSON)。数据很好地传递给处理程序。
如何在"SyntaxError: missing ] after element list"
处理程序中格式化对象数组?
答案 0 :(得分:2)
不要使用onclick
属性来绑定事件。使用addEventListener
添加活动。
onclickReference.click(function(){
drawChart(originReference, stringArray, jsonArray);
return false;
});
编辑:根据您的评论,您在循环中绑定事件。在这种情况下,您需要创建一个闭包来“捕获”变量的值。
试试这个:
onclickReference.each(function(){
// Define your variables inside this new scope
var originReference = "myDynamicString";
var stringArray = [];
var objArray = [];
this.click(function(){
drawChart(originReference, stringArray, jsonArray);
return false;
});
});
答案 1 :(得分:2)
您应该使用JSON.stringify将您的javascript对象转换为json字符串。
onclickReference.attr("onclick", "drawChart('" + originReference + "'," + JSON.stringify(stringArray) + "," + JSON.stringify(jsonArray) + "); return false;");
但正如@Rocket Hazmat所说,使用onclick
属性是一种不好的事件绑定方式。