dポイントプレゼントキャンペーン実施中!

いつもお世話になっています。
<script type="text/css">
<!--
div#contents{
width:100%;
overflow:auto;
height:600px;
}
-->
</script>

<script type="text/javascript">
<!--
function myscroll(){
setTimeout("myscroll",1000);
document.getElementById("contents").scrollTop = 600;
}
// -->
</script>

<td><!--ここのtdの高さは未定-->
<div id="contents">
<table>
<!--ここからログ。下記3行がループされます-->
<tr>
<td>ここにログ</td>
</tr>
<!--ログここまで-->
</table>
</div>
</td>

というHTMLがあり、ログを日ごとにチェックするWEB管理画面です。

読み込んだ時点でmyscrollが呼ばれ、スクロールバーが
divの一番下に来るように設定されています。(最新が一番下にくるため)

ログは日ごとに可変で、600px以内に収まれば、ちゃんとスクロールバーはdivの一番下に来るのですが、
それを超えてしまうと、中途半端な位置でスクロールが止まってしまいます。

600px以内に~というのは推測で、実際にそうなのかはわかりません。詳しくは下記に。

ちなみに、tdにIDとheightを設定してmyscrollをtdのIDで動かそうとしてもスクロールは動きません。
3行がループというのはsmartyというPHPのライブラリを通して動かしています。

スクロールが下まで行くのはだいたい60行程度のログで、1行20px程度になっています。(この時点ですでに600pxは超えているのですが、ちゃんと動きます)。
実際3000行のログが入ってきたことがあって、スクロールがほんのちょっとしか動きませんでした。


どんな長いログが来てもちゃんとスクロールが一番下まで来るためには、どのように記述しなければならないのでしょうか。
よろしくお願いします。

A 回答 (1件)

このように動的に高さを取得して、設定させてみるとどうでしょう。



var e = document.getElementById("contents");
e.scrollTop = e.scrollHeight;
    • good
    • 0
この回答へのお礼

すばらしい!

解決しました!
迅速な回答ありがとうございました!

お礼日時:2008/05/16 13:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!