2012-04-28 56 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