2009-07-31 7 views
1

Javascriptでテーブルをループし、行の最初のセルからテキストを取得する際に問題が発生しました。このセルのテキストを取得して、それを他のものと比較して、テキストが一致する場合はその行を削除したいと考えています。私がテキストを取得しようとすると、実際に出てくるのは「[オブジェクトテキスト]」です。誰でも実際にテキストを取得する方法を教えてもらえますか?下の私のコードは、テーブルのすべての行をループするために動作し、私はそれが正しいセルを取得していると思います。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

です。このソリューション全体は、クリーンコードの約3〜5行に縮小されます。 – Sampson

+3

うわー、およそ200行のフレームワークコード。 – kemiller2002

答えて

4

これはそれを行う必要があります。

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

"これは" を参照 "のdocument.createElement( 'ボタン');"

第一のparentNodeは、細胞 第二parentNodeはあなたがjQueryのを使用して検討すべきテーブル

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

申し訳ありませんが、2番目のParentNodeは親の行に対応しています –

関連する問題