2012-04-28 11 views
0

だから私はこのようなテーブルがあります。javascriptのDOM:HTMLテーブル操作の問題

<table class="inventoryItems" id="inventoryItems"> 
    <tr> 
     <th id="itemCost" class="noLeft">id </th> 
     <th id="soldAmount" class="right">Item Description </th> 
    </tr> 
    <tr id="itemRow"> 
     <th > 
      <input onBlur="shapeMapper(this)" ></input> 
     </th> 
     <th > 
      <input onBlur="shapeMapper(this)" ></input> 
     </th> 
    </tr> 
</table> 

本当に単純なテーブル

を、私は次の形式のjavscriptでそれを操作しようとしています:

function shapeMapper(arg){ 
    //arg goes unused for now. 
    var tblName = "inventoryItems"; 
    var tbl = document.getElementById(tblName); 
    var soldAmount = document.getElementById("soldAmount").cellIndex; 
    var itemCost = document.getElementById("itemCost").cellIndex; 
    var rowCount = tbl.rows.length; 
    var itemList = ""; 
    var totalCost=0; 
    var totalSold=0; 

    for(var i = 1; i<=rowCount-1 ; i++){ 
     var fC = tbl.rows[i].cells[itemCost].firstChild; 
     r=tbl.rows[i]; 

     alert(r.cells[itemCost].value); 
     totalCost = totalCost + Number(r.cells[itemCost].firstChild.value) ; 
     totalSold = totalSold + Number(r.cells[soldAmount].firstChild.value) ; 
    } 
} 

しかしr.cells[itemCost].firstChild.value入力ボックスに値が入力されていても「未定義」に戻ってきます...なぜ誰かが何らかのアイデアを持っていますか?

私は絶対にナットです。

ありがとうございました!

+2

次の時間に正しくインデントします。問題自体を読むことができないときは誰も問題を解決しません。 – Joseph

+1

可読性は相対的です....判定の基準ではありません – albert

答えて

1

r.cells[itemCost].firstElementChild.value 

を試みるスペースや改行がDOM内のノードとしてみなされているため、それ以外の場合は、不定値のtextElementを取得します。 firstChildは最初のノードの子を取得し、firstElementChildは最初のの要素の子を取得します。

ただし、すべてのブラウザでfirstElementChildがサポートされているわけではありません(FF < 3.5、IE < 9)。

+1

'undefined'の値は、値が定義されていないときに得られる値です。これは、あるメンバーが存在することが最も一般的に予想されます。この場合、 'value'は存在しません。クライアントコードが存在する場合は、そこに存在するデータ構造のビューを取得するために 'console.log(r.cells [itemCost])'を試してください(明らかに、window.console()を実装するブラウザ、またはfirefox + firebugが必要です)それを作成する責任はありません。 (+1) – dwerner

+0

が完璧です。こんにちはこれはまさにそれです!それは今完璧な意味があります。 –