在javascript问题中动态创建对象
您好,正在尝试动态创建此阵列。这是静态方式:在javascript问题中动态创建对象,javascript,jquery,Javascript,Jquery,您好,正在尝试动态创建此阵列。这是静态方式: var pieData = [ { value: 300, color:getRandomColor(), highlight: getRandomColor(), }, { value: 50,
var pieData = [
{
value: 300,
color:getRandomColor(),
highlight: getRandomColor(),
},
{
value: 50,
color: getRandomColor(),
highlight: "#fac878",
},
{
value: 100,
color: getRandomColor(),
highlight: getRandomColor(),
},
{
value: 120,
color: getRandomColor(),
highlight: getRandomColor(),
}
];
这就是我所取得的成就:
$.ajax({
method: "POST",
url: "getPieChartData"
})
.done(function(data){
obj = $.parseJSON(data);
var pieData = []; i = 0;
$.each(obj, function(key, item) {
pieData[i].value = item.total + " - " + item.d_name;
pieData[i].color = getRandomColor();
pieData[i].highlight = getRandomColor();
i++;
});
});
我从我的函数中得到的值不是问题。我的问题是,我在控制台中看到这部分:
pieData[i].value = item.total +" - " + item.d_name; TypeError: pieData[i] is undefined
我做错了什么?thx在
pieData[i].value..
之前,您应该首先有一行:
pieData[i] = {};
在
pieData[i].value..
之前,应该先有一行:
pieData[i] = {};
您可以使用简单的方法。不需要使用索引器
方法将一个或多个元素添加到数组的末尾,并返回数组的新长度
您可以使用简单的方法。不需要使用索引器
方法将一个或多个元素添加到数组的末尾,并返回数组的新长度
首先需要创建pieData[i]对象
var pieData = []; i = 0;
$.each(obj, function(key, item) {
pieData[i] = {}; // added line
pieData[i].value = item.total + " - " + item.d_name;
pieData[i].color = getRandomColor();
pieData[i].highlight = getRandomColor();
i++;
});
首先需要创建pieData[i]对象
var pieData = []; i = 0;
$.each(obj, function(key, item) {
pieData[i] = {}; // added line
pieData[i].value = item.total + " - " + item.d_name;
pieData[i].color = getRandomColor();
pieData[i].highlight = getRandomColor();
i++;
});
但是在ajax事件之后如何访问?如果我放了一个控制台日志,它说我是未定义的?@GeorgeMoldovan,AJAX的一个代表异步遍历,它是一个很好的读物,将为您的问题提供解决方案这段代码运行良好,但“推送”并不是问题的解决方案。解决方案是将新对象传递给push,但是您也可以不使用push来实现,就像@jamesnewton在他的回答中所写的那样。但是在ajax事件之后,我如何访问呢?如果我放了一个控制台日志,它说我是未定义的?@GeorgeMoldovan,AJAX的一个代表异步遍历,它是一个很好的读物,将为您的问题提供解决方案这段代码运行良好,但“推送”并不是问题的解决方案。解决方案是将新对象传递给push,但你也可以不用push来完成,就像@jamesnewton在他的回答中所写的那样。