2012-04-28 49 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 2012-04-28 05:15:42

+1

可讀性是相對的......不是判斷的基準 – albert 2012-04-28 09:27:23

回答

1

嘗試

r.cells[itemCost].firstElementChild.value 

否則它得到未定義值的textElement,因爲空格和回車被認爲是在DOM節點。 firstChild得到第一個節點子,而firstElementChild得到第一個元素子。

但是,請注意,每個瀏覽器都不支持firstElementChild(FF < 3.5,IE < 9)。

+1

未定義的值是您未定義值時得到的值。這是最常見的期望某個成員存在的情況下,在這種情況下'價值',當它不存在時。嘗試使用'console.log(r.cells [itemCost])'(顯然你需要一個實現了window.console()或firefox + firebug的瀏覽器),以便獲得當前存在的數據結構的視圖,如果你的客戶端代碼是不負責創建它。 (+1) – dwerner 2012-04-28 05:42:14

+0

完美。非常感謝,這就是它!它現在非常有意義。 – 2012-04-28 11:59:54