我正在尝试从填充的javascript表中提取数据。如何从javascript行中提取值?我正在使用
for (var i = 0; i < rowCount; i++) {
var row = table.rows[i];
//This is where I am having trouble
var chkboxIndicator = row.cells[0].childNodes[1];
alert(chkboxIndicator);
//
if (chkboxIndicator == indicator && Checkbox.checked == false) {
table.deleteRow(i);
rowCount--;
i--;
}
}
其中包含“未定义”的警告消息。我也尝试了.value和.text,没有进展。如何从childNodes获取文本?
答案 0 :(得分:0)
您确定chkboxIndicator
不是null
吗?
如果它为null,它将作为未定义警告。
尝试
for (var i = 0; i < rowCount; i++)
{
var row = table.rows[i];
// Add null check for row
if (row != null)
{
//This is where I am having trouble
// Add null check for cell
if (row.cells[0] != null)
{
var chkboxIndicator = row.cells[0].childNodes[1];
// Added null check for chkboxIndicator
if (chkboxIndicator != null)
{
alert(chkboxIndicator);
if (chkboxIndicator == indicator && Checkbox.checked == false)
{
table.deleteRow(i);
rowCount--;
i--;
}
}
else
{
alert('chkboxIndicator is NULL');
}
}
}
}
答案 1 :(得分:0)
取决于你的DOM实际上是什么样的。
我怀疑你的问题是childNodes [1]可能是一个文本节点。
您可能希望在单元格上使用选择器,例如:
$(row.cells[0]).find("input[type='checkbox']");
答案 2 :(得分:0)
既然您声称使用的是jQuery,为什么不使用它来获取复选框并简化您的生活?
$("#mytableid tr").each(function() {
// find the checkbox (assuming you have only one; if not, use :eq(n))
var $checkbox = $("input:checkbox", this);
// if it's checked, delete this row
if ($checkbox.is(":checked"))
$(this).remove();
});
有更疯狂的方法,但我认为这个例子是说明性的。 :)
答案 3 :(得分:0)
如果您希望它也快,请使用jOrder(http://github.com/danstocker/jorder)。
使用您的数据创建一个jOrder表。确保在其中使用true或false值“检查”字段,并在该列和ID上添加索引:
var table = jOrder(data)
.index('id', ['ID'])
.index('checked', ['checked'], { grouped: true });
然后,您可以使用table.where([{ 'checked': true }])
作为来源删除未选中的行来重建网格。
但首先,使用jOrder表中的数据填充网格。使用table.flat()
获取平面表。
构建网格时,将记录ID绑定到复选框,例如按$('#elem').data()
。选中(取消)复选框后,更新表中的“已检查”值:
var before = table.where([{ 'ID': 5 }])[0];
var after = table.where([{ 'ID': 5 }])[0];
after.checked = true;
table.update(before, after);
请注意,您不应对“(un)check all”事件中的每个项目执行此操作。在这种情况下,只需简单地传递table.flat()
或在其返回的缓冲区中设置“已检查”值,然后发出table.reindex()
和然后调用table.where(...)
。
答案 4 :(得分:0)
我缺少的代码块如下
var row = table.rows.item(i).cells;
var cellLength = row.length;
var cellVal = row.item(5).innerHTML;
感谢您带领我朝着正确的方向前进