0

私は一種の初心者なので、間違いをどこで探すべきかわかりません。特定のテーブルのすべての行をカウントしたいのですが、テーブル自体の上/内側に番号が必要です。ただし、関数を呼び出したポイントより上の行数しか取得できませんが、テーブル全体の行数が必要です。

(...)
<script type="text/javascript">
function countRows()
{
   rowsCount = document.getElementById("list").rows.length;
   return rowsCount;
}
</script>

<body>

<table id="list">
<tr><td>
There are 
<script type="text/javascript"> document.write(countRows()) </script> 
rows here. // Returns "1"
</td></tr>

<tr><td>(Stuff goes here)</td></tr>
<tr><td>(Stuff goes here)</td></tr> // script would return "3" here.
<tr><td>(Stuff goes here)</td></tr>
<tr><td>(Stuff goes here)</td></tr>
(...)

ここにjQueryはありません!いいとは思いますが、この場合は使えません。

4

1 に答える 1

4

これを試して:

window.onload = function()
{
    var tbl = document.getElementById("list");
    document.body.innerHTML += tbl.lrows.length;//or tbl.rows[0].cells[0].innerHTML
};

このonloadイベントは、ページが完全に読み込まれた後に発生します。これにはテーブル全体が含まれます。すべての行が揃うまで行数を数えることはできません... 理にかなっていますね。:P

ああ、お願いします。あなたはまだ学んでいるので、間違ったことを学ばないでくださいdocument.write。たとえば、悪い意味で欠陥があります。
現時点では重要ではないように思われますがrowsCount、暗黙のグローバル変数を使用して最も悪質な変数を作成していることにも注意してください。しないでください、決してそれをしないでください。グローバル名前空間が乱雑にならないように、使用するすべての変数を宣言する習慣を身につけてください。(つまり、そうしないと、スクリプトは厳密モードで失敗します)。

于 2013-06-17T14:17:39.533 に答える