何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 37042
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

元ネタは、mixi の ASP.NET コミュにある質問。

複数枚の、動的に生成される画像を、一定時間毎に切り替えて、アニメーションのように表示したい、とのこと。出遅れたので、ここに書いておく。

表示したいところ
<div style="position:relative;">
    <p style="position:absolute; top:0; left:0; display:none;" id="p1">あいうえお</p>
    <p style="position:absolute; top:0; left:0; display:none;" id="p2">かきくけこ</p>
    <p style="position:absolute; top:0; left:0; display:none;" id="p3">さしすせそ</p>
</div>

面倒なので文字列にする。

まず、div で囲む。このとき、style で position を relative にする。こうすることで、この中の要素の absolute 指定が、この要素の座標を基準にすることになる。

表示するものは、まずは display を none にしておく。これで表示されない。そして、id として、同じ文字列に序数をつけたものを指定する。これで、後から検索しやすくなる。

JavaScript
<script language="javascript">
<!--
    var cnt = 1;
    function parapara() {
        for (i = 1; i <= 3; i++) {
            var pid = "p" + i;
            var cntrl = document.getElementById(pid);
            if (cntrl != null) {
                if (i == cnt) {
                    cntrl.style.display = "block";
                } else {
                    cntrl.style.display = "none";
                }
            }
        }
        cnt++;
        if (cnt > 3) {
            cnt = 1;
        }
        setTimeout(parapara, 1000);
    }
    setTimeout(parapara, 1000);
    // -->
</script>

cnt が、何番目を表示するかを保持する。for 文でぶん回して、片っ端から display を変更していく。このとき、ループの回数と cnt が同じものは block に。違うものは none にする。

cnt をインクリメントして、用意している最大数だったら最小数に戻す。最後にもう一度呼ばれるようにタイムアウトを設定する。

mixi の方には AJAX を利用したり、reload させて...という案で進んでいたのですが、そうすると表示を変えるタイミングで通信が発生します。もちろん、セッションを保つという大きな効用もあるのですが、それよりも、セッションが切れないことをセキュリティ リスクと考えました。また、ネットワークに余計な負荷をかけることもないかと思います。

投稿日時 : 2007年7月20日 6:24
コメント
  • # ブランド通販店
    Georgefipse
    Posted @ 2019/09/17 4:19
    弊社は各ランクのブランド商品満載し、ブランド通販店で一番信用のある店なので!。
    品質はこちらが間違いなく保証します。
    https://www.ginzaoff.com

    ■取扱ブランド ロレックス時計コピー、カルティエ時計コピー、IWC時計コピー、
    ブライトリング時計コピー、パネライ時計コピー.
    ◆ スタイルが多い、品質がよい、価格が低い、実物写真!
    ◆ ご入金頂いてから最速4日、遅くとも7日程度でご指定場所へ発送出来る予定でございます
    ◆ 商品送料を無料にいたします

    ◆信用第一、良い品質、低価格は 私達の勝ち残りの切り札です。
    ◆ 当社の商品は絶対の自信が御座います。
    ◇ N品質 シリアル付きも有り 付属品完備!

    ◆ 必ずご満足頂ける品質の商品のみ販売しております。
    ◇ 品質を最大限本物と同等とする為に相応の材質にて製作している為です。
    ◆ 絶対に満足して頂ける品のみ皆様にお届け致します。

    興味あれば、是非一度サイトをご覧になって下さい。
    今後ともよろしくご愛顧くださいますよう、お願い申し上げます
    https://www.ginzaoff.com
    お取り引きを開始させていただきたく思います。
    詳細に関してはどうぞお気軽にご連絡ください。
タイトル
名前
Url
コメント