• ベストアンサー

文字列を時間で入れ替え

文字列を時間で入れ替えしたいです。 CGIでスクリプトで表示する文字列を管理したいと思っています。 当初は<MARQUEE>でやっていたのですが、流れるのではなく固定文字列が入れ替わるようにしたいんです。 CGIで1行目2行目~という感じで行ごとを保存します。 で、ページの一部にまず1行目を表示し、数秒後に2行目を表示、さらに数秒後に3行目を…という感じで5~6行を入れ替えるような形にしたいです。 以上、方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

#2です。 ようやくわかりました。 前回のは縦スクロールをイメージしたのですが 単純に電光掲示板みたいな仕様ですね。 であれば、ちょっと調整してこんなかんじ。 setIntervalで呼び出す前に、一度loopを呼べば 直ぐ表示されます。 またsetIntervalの数字はミリ秒なので10000で 10秒になります。 <span id="msg_view"></span><br> <hr> <script language="javascript"> msg = new Array(); msg[0]="●□□□□□□□□□"; msg[1]="□●□□□□□□□□"; msg[2]="□□●□□□□□□□"; msg[3]="□□□●□□□□□□"; msg[4]="□□□□●□□□□□"; msg[5]="□□□□□●□□□□"; msg[6]="□□□□□□●□□□"; msg[7]="□□□□□□□●□□"; msg[8]="□□□□□□□□●□"; msg[9]="□□□□□□□□□●"; count=0 function loop(){ document.getElementById("msg_view").innerText=msg[count % msg.length]; count++ } loop(); timeid=setInterval("loop()",10000) </script>

master-3rd
質問者

お礼

説明がうまく出来なくて済みませんでした。 ばっちりです!これを求めてました。 あとは、msg[*]の後のメッセージをCGIで管理してあげればOKですね。 素早い返答ありがとうございました!!

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

質問のイミがいまいちわからないのですが わたしなりに解釈してこんな風にしたいのでしょうか? <span id="row1"></span><br> <span id="row2"></span><br> <span id="row3"></span><br> <span id="row4"></span><br> <span id="row5"></span><br> <span id="row6"></span><br> <hr> <script language="javascript"> msg = new Array(); msg[0]="●□□□□□□□□□"; msg[1]="□●□□□□□□□□"; msg[2]="□□●□□□□□□□"; msg[3]="□□□●□□□□□□"; msg[4]="□□□□●□□□□□"; msg[5]="□□□□□●□□□□"; msg[6]="□□□□□□●□□□"; msg[7]="□□□□□□□●□□"; msg[8]="□□□□□□□□●□"; msg[9]="□□□□□□□□□●"; count=0 function loop(){ document.getElementById("row1").innerText=msg[count % msg.length]; document.getElementById("row2").innerText=msg[(count+1) % msg.length]; document.getElementById("row3").innerText=msg[(count+2) % msg.length]; document.getElementById("row4").innerText=msg[(count+3) % msg.length]; document.getElementById("row5").innerText=msg[(count+4) % msg.length]; document.getElementById("row6").innerText=msg[(count+5) % msg.length]; count++ } timeid=setInterval("loop()",100) </script>

master-3rd
質問者

補足

私自身応用が利かないので「惜しい」と言う感じです(自分で改造が出来ればこれが正解なのかも…) 表示するのは1行です。 ティッカーみたいなものを作りたいんです。 もっと簡単に言えば、GIFアニメの文字列版とでも言えばわかりやすかったでしょうか?アニGIFって、まず1枚目を数秒表示し次の絵をまた数秒表示して…って感じで1ヶ所でパッパッっと切り替わりますよね。 これを文字のみで表現できないかと考えています。 うまく伝わったでしょうか? また、「timeid=setInterval("loop()",100)」の部分が表示時間だと思うのですが、1000以上にすると表示しなくなってしまいます。1コマ10秒程度表示したいのですが、可能でしょうか?

回答No.1

JavaScriptの時間別メッセージ表示をしていしてはどうですか? 参考URLに表示例のソースがありますので 時間とメッセージを変更してお使いになってみては どうでしょう。 ここにソースを載せるには結構手間なので・・。

参考URL:
http://www.tagindex.com/javascript/message/time1.html
master-3rd
質問者

補足

この方法だと、1行しか表示しませんよね。 数秒ごとにすべての文字列をループさせたいので、この方法ではちょっと無理かと。 他に方法があればお願いします。

関連するQ&A