2010-07-13 56 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