我的javascript代码中有这个块:
{
type: 'number',
label: 'AAA',
calc: function (dt, row) {
return (dt.getValue(row, 1) == 'AA') ? dt.getValue(row, 2) : null;
}
}
值'AA'是硬编码的,我需要重新编写它以循环这组值(AA,BB,CC,...)。
按顺序编写,它会运行如下:
var view = new google.visualization.DataView(data);
view.setColumns([0, {
type: 'number',
label: 'AA',
calc: function (dt, row) {
return (dt.getValue(row, 1) == 'AA') ? dt.getValue(row, 2) : null;
}
}, {
type: 'number',
label: 'BB',
calc: function (dt, row) {
return (dt.getValue(row, 1) == 'BB') ? dt.getValue(row, 2) : null;
}
}, {
type: 'number',
label: 'CC',
calc: function (dt, row) {
return (dt.getValue(row, 1) == 'CC') ? dt.getValue(row, 2) : null;
}
}]);
我尝试使用此代码执行此操作,但我不知道它为什么不起作用:
var colEvn = ["AA","BB","CC"];
$viewObj = new Object();
for (var j = 0, m = colEvn.length; j < m; j++) {
view.type = 'number';
view.label = colEvn[j];
view.calc = function (dt, row) {
return (dt.getValue(row, 1) == colEvn[j]) ? dt.getValue(row, 2) : null;
}
}
并使用收集的对象:
var view = new google.visualization.DataView(data);
view.setColumns([0, $viewObj]);
我该怎么办?提前谢谢!
我改变了我的代码:
function viewFunc(j) {
return function() { return (dt.getValue(row, 1) == colEvn[j]) ? dt.getValue(row, 2) : null; };
}
var viewObj = new Object();
for (var j = 0, m = colEvn.length; j < m; j++) {
viewObj.type = 'number';
viewObj.label = colEvn[j];
viewObj.calc = viewFunc(j);
}
var view = new google.visualization.DataView(data);
view.setColumns([0, viewObj]);
它给了我错误 - &gt; “dt未定义”