0

所以我有一张这样的桌子:

<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即使输入框中输入的值返回为“未定义”......有人知道为什么吗?

它把我逼疯了。

谢谢!

4

1 回答 1

1

尝试

r.cells[itemCost].firstElementChild.value

否则它会得到一个textElement未定义的值,因为空格和回车被视为 DOM 中的节点。firstChild获取第一个节点子节点,同时firstElementChild获取第一个元素子节点。

但是,请注意firstElementChild并非所有浏览器都支持此功能(FF < 3.5,IE < 9)。

于 2012-04-28T05:33:53.570 回答