テストページ
<!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 では、動的に生成されたテーブルの行をカウントする際に問題があるようです:/