javascript中获取最后一个子节点为空或不是对象
//计算消费总价
function computeTotal(){
var tr=document.getElementsByTagName("tr");
var num=0;
for(var i=1;i<=tr.length;i++){
num+=parseInt(tr[i].lastChild.previousSibling.innerHTML);
}
document.getElementById("total").innerHTML=num;
}
我用document.getElementsByTagName获取所有tr下的子节点循环遍历子节点 报错说lastChild为空或不是对象 但是我调试报错时继续走 结果却能出现在页面上 

解决方案 »

  1.   

    用lastChild、previousSibling属性访问节点时,浏览器之间是有差异的。IE会忽略空白文本节点(空格、换行),更多的浏览器不会忽略掉。你的本意可能是用一个循环,对每一行倒数第二个元素的值进行求和(假设这个元素是个span元素),可以这样处理:
    function computeTotal() {
        var tr = document.getElementsByTagName("tr");
        var num = 0;
        for (var i = 1; i <= tr.length; i++) {
            var obj = tr[i].getElementsByTagName('span');
            num += parseInt(obj[obj.length - 1].innerHTML);
        }
        document.getElementById("total").innerHTML = num;
    }
      

  2.   

    num += parseInt(obj[obj.length - 2].innerHTML); //纠正一下,这样才是取倒数第二个元素