大家看看这个问题,为什么浏览器会报出_thtr is null的错误?求解。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取表格某一列</title><script language="javascript" type="text/javascript">
function getAvg(){//获取某个元素的子节点
var _tb = document.getElementById("dataTb"); //根据id得到table
var _thread = _tb.firstChild; //得到thread
var _thtr = _thread.firstChild;
window.alert(_thtr);
var scoreIndex = 0; //记录成绩td的索引
var _thtrChildAry = _thtr.childNodes;
for(var i=0; i<_thtrChildAry.length; i++){
if(_thtrChildAry[i].innerText == "成绩")
{//得到内容为“成绩”的th的索引
scoreIndex = i;
break;
}
}
var _tbody = _tb.childNodes[1]; //得到tbody
var _dataTrAry = _tbody.childNodes; //得到信息列表
var sum = 0; //记录总分
var count = _dataTrAry.length - 1; //得到个数除去最后一行的按钮
for(var i=0; i<_dataTrAry.length-1; i++){
var _tr = _dataTrAry[i];
sum += parseFloat(_tr.cells[scoreIndex.innerText]);
}
window.alert("总分:" + sum);
window.alert("平均分:" + sum/count);
}
</script></head><body>
<form name="frmDOMTb" method="post" action="#">
<table width="800" border="1" cellpadding="0" id="dataTb">
<thead>
<tr>
<th scope="col">序号</th>
<th scope="col">学号</th>
<th scope="col">姓名</th>
<th scope="col">院系</th>
<th scope="col">专业</th>
<th scope="col">成绩</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>20070101</td>
<td>张三</td>
<td>信息技术学院</td>
<td>计算机应用</td>
<td>80</td>
</tr>
<tr>
<td>2</td>
<td>200702101</td>
<td>李四</td>
<td>机电工程学院</td>
<td>电气自动化</td>
<td>85</td>
</tr>
<tr>
<td>3</td>
<td>20070102</td>
<td>王五</td>
<td>信息技术学院</td>
<td>计算机应用</td>
<td>65</td>
</tr>
<tr>
<td>4</td>
<td>200702102</td>
<td>赵六</td>
<td>机电工程学院</td>
<td>电气自动化</td>
<td>55</td>
</tr>
<tr>
<td colspan="6" align="center">
<input type="button" value="平均分" onclick="getAvg()" />
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取表格某一列</title><script language="javascript" type="text/javascript">
function getAvg(){//获取某个元素的子节点
var _tb = document.getElementById("dataTb"); //根据id得到table
var _thread = _tb.firstChild; //得到thread
var _thtr = _thread.firstChild;
window.alert(_thtr);
var scoreIndex = 0; //记录成绩td的索引
var _thtrChildAry = _thtr.childNodes;
for(var i=0; i<_thtrChildAry.length; i++){
if(_thtrChildAry[i].innerText == "成绩")
{//得到内容为“成绩”的th的索引
scoreIndex = i;
break;
}
}
var _tbody = _tb.childNodes[1]; //得到tbody
var _dataTrAry = _tbody.childNodes; //得到信息列表
var sum = 0; //记录总分
var count = _dataTrAry.length - 1; //得到个数除去最后一行的按钮
for(var i=0; i<_dataTrAry.length-1; i++){
var _tr = _dataTrAry[i];
sum += parseFloat(_tr.cells[scoreIndex.innerText]);
}
window.alert("总分:" + sum);
window.alert("平均分:" + sum/count);
}
</script></head><body>
<form name="frmDOMTb" method="post" action="#">
<table width="800" border="1" cellpadding="0" id="dataTb">
<thead>
<tr>
<th scope="col">序号</th>
<th scope="col">学号</th>
<th scope="col">姓名</th>
<th scope="col">院系</th>
<th scope="col">专业</th>
<th scope="col">成绩</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>20070101</td>
<td>张三</td>
<td>信息技术学院</td>
<td>计算机应用</td>
<td>80</td>
</tr>
<tr>
<td>2</td>
<td>200702101</td>
<td>李四</td>
<td>机电工程学院</td>
<td>电气自动化</td>
<td>85</td>
</tr>
<tr>
<td>3</td>
<td>20070102</td>
<td>王五</td>
<td>信息技术学院</td>
<td>计算机应用</td>
<td>65</td>
</tr>
<tr>
<td>4</td>
<td>200702102</td>
<td>赵六</td>
<td>机电工程学院</td>
<td>电气自动化</td>
<td>55</td>
</tr>
<tr>
<td colspan="6" align="center">
<input type="button" value="平均分" onclick="getAvg()" />
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
我用的ie8,页面load完以及点击按钮后都没有问题
我用的ie8,页面load完以及点击按钮后都没有问题
下面的兼容FF,CHROME,IE8另外,1楼的那几位真的会睁眼说瞎话,LZ那代码在FF,Chrome下肯定是错的,在IE8下我试了下,也是不行的.function getAvg(){//获取某个元素的子节点
var _tb = document.getElementById("dataTb"); //根据id得到table
var _ths = _tb.getElementsByTagName('th');
var scoreIndex = 0; //记录成绩td的索引
for(var i=0; i<_ths.length; i++){
if(_ths[i].innerHTML == "成绩"){//得到内容为“成绩”的th的索引
scoreIndex = i;
break;
}
} var _tds = _tb.getElementsByTagName('td');
var sum = 0; //记录总分
var count = 0;
for(var i=scoreIndex; i<_tds.length; i+=_ths.length){
sum += parseFloat(_tds[i].innerHTML);
count++;
}
window.alert("总分:" + sum);
window.alert("平均分:" + sum/count);
}