语言:jQuery、javascript
下面的代码:运行良好。
(...)
var check_box_values = $('#myForm [type="checkbox"]:not(:checked)').map(function ()
{
return this.value;
}).get();
下面的代码:运行良好。
function f(check_box_values)
{
(...)
var obj = jQuery.parseJSON(jsonData);
var data = google.visualization.arrayToDataTable(obj);
下面的代码:for 循环运行良好,但 if 语句从未启动
for (var i = 1; i < data.getNumberOfColumns()-1; i++)
{
if ($.inArray(i, check_box_values) > -1)
{
data.removeColumn(i);
}
}
HTML 代码:运行良好。
我做错了什么? 注意:check_box_values 数组已填充。
编辑:(例如)
getNumberOfColumns:6
check_box_values array: [1,3,5]
最佳答案
我发现您的代码有问题。一旦调用 data.removeColumn,列索引将被重置,并且 getNumberOfColumns() 的结果将与您期望的不同。换句话说,这个函数不是设计来在循环内调用的。
这是一个例子。假设您有五列,columIndex 的范围为 0-4。您想要删除第三列 (columnIndex: 2) 和第五列 (columnIndex: 4)。一旦你的代码第一次被执行,即removeColumn(2),列索引将被移动并且getNumberOfColumns()将变成4。如果你调用removeColumn(4),它将导致运行时错误,因为索引不指向任何列。您应该调用removeColumn(3)。
关于javascript - 谷歌图表删除带有多个复选框的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13532059/