2010-07-13 62 views
1

我想从我填充的JavaScript表中拉出数据。我如何从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

的,我是缺少代码块是以下

var row = table.rows.item(i).cells; 
var cellLength = row.length; 
var cellVal = row.item(5).innerHTML; 

感谢领导我朝着正确的方向

0

您确定chkboxIndicator不是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'); 
      }  
     } 
    } 
} 
+0

的的childNodes值为NULL是什么。我如何从中获得文本/值? – MrM 2010-07-13 18:58:12

+0

你的html是什么样的?您可以通过调用innerText或innerHTML来获取单元格中的文本。 – 2010-07-13 21:12:08

0

取决于你的实际DOM样子。

我怀疑你的问题是,childNodes [1]可能是一个文本节点。

你可能想对细胞使用选择代替,如:

$(row.cells[0]).find("input[type='checkbox']"); 
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(); 
}); 

有很疯狂的方法来做到这一点,但我认为这个例子会说明问题。 :)

0

如果你想它也快,请使用jOrder(http://github.com/danstocker/jorder)。

用您的数据创建一个jOrder表。请在它肯定有一个字段“检查”与真或假的值,并把指标该列和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); 

注意,你不应该用于在每个项目都能如此“(取消)选中”事件。在这种情况下,只需传递table.flat()或在其返回的缓冲区中设置'checked'值,然后发出table.reindex(),然后发送table.where(...)

+0

看起来非常有趣!你有一些示例代码或关于如何使用jOrder和HTML表格的东西?让他们保持同步,并保持一致? – Svish 2010-07-14 09:41:22

+0

目前还没有快速的解决方法,但是很快就会有一段时间了。就目前而言,即使发生最轻微的变化,您也必须重新构建表格。请留意http://jorder.wordpress.com上的jOrder博客,我会尽可能经常发布新闻,计划和示例代码。 – 2010-07-14 10:26:06