测试页面
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>testcase</title>
</head>
<body>
<button onclick="Foo()">Eat me</button>
<button id="bar"><-- Hit it</button>
<table id="testTable" onchange="Bar()"></table>
<script type="text/javascript">
function Foo(){
var table = document.getElementById("testTable");
for(var i=0; i < 7; i++){
var row = document.createElement("tr");
for(var j=0; j < 7; j++){
var cell = document.createElement("td");
cell.innerHTML = i + "-" + j;
row.appendChild(cell);
}
table.appendChild(row);
}
Bar();
}
function Bar(){
var bar = document.getElementById("bar");
var table = document.getElementById("testTable");
if(bar.textContent){
bar.textContent = "table.rows.length = " + table.rows.length;
}else{
bar.innerText = "table.rows.length = " + table.rows.length;
}
}
</script>
</body>
</html>
在 Firefox 19, Chrome 26 或 IE9+ 上,后面的数字table.rows.length =
是正确的,但是 IE8 总是0
,table.rows
本身也是空的(我不知道如何证明,IE 的调试工具不会显示 Javascript 对象的内容Chrome 和 Firefox 会)。似乎 IE8 在计算动态生成表的行数时有问题:/