2009-07-31 42 views
1

我在循環瀏覽Javascript中的一個表格並從一行的第一個單元格獲取文本時遇到問題。我想獲取這個單元格的文本,以便我可以將其與其他內容進行比較,如果文本匹配,則刪除該行。當我嘗試獲取文本時,所有實際出現的是「[object text]」。任何人都可以告訴我如何真正獲得文本。我的代碼如下循環遍歷表中的所有行,我認爲它正在獲取正確的單元格。Javascript表格

function addRow(id, sender, message){ 
var theTable = document.getElementById('messageTable'); 
var lastRow = theTable.rows.length; 
var newRow = theTable.insertRow(lastRow); 
newRow.id = id; 

var cellLeft = newRow.insertCell(0); 
var textNode = document.createTextNode(id); 
cellLeft.appendChild(textNode); 

var secondCell = newRow.insertCell(1); 
var textNode2 = document.createTextNode(sender); 
secondCell.appendChild(textNode2); 

var messageCell = newRow.insertCell(2); 
var messageNode = document.createTextNode(message); 
messageCell.appendChild(messageNode); 

var deleteCell = newRow.insertCell(3); 
var deleteNode = document.createElement('button'); 
deleteNode.value = 'Delete'; 
deleteNode.innerHTML = 'Delete'; 
deleteNode.onclick = function(){ 
    var myTable = document.getElementById('messageTable'); 
    var rows = myTable.childNodes; 

    var i=1; 
    for (i=1;i<rows.length;i++) { 
     var myCell = rows[i].getElementsByTagName("td")[0]; 
     var myCellText = myCell.childNodes[0]; 
     alert(myCellText); 
     if (myCellText == id){ 
      alert('match'); 
     } 
     alert('done'); 
    }    
}; 
deleteCell.appendChild(deleteNode); 
} 
+2

你應該考慮使用jQuery。整個解決方案將減少到大約3-5行乾淨的代碼。 – Sampson 2009-07-31 11:47:13

+3

是的,約200行框架代碼。 – kemiller2002 2009-07-31 11:48:59

回答

4

這應做到:

var myCellText = myCell.childNodes[0].innerHTML; 
0

「這」 指的是 「使用document.createElement( '按鈕');」

1 ParentNode是細胞 第二ParentNode是表

deleteNode.onclick = function(){ 
    alert(this.parentNode.parentNode.id); 
};