• ベストアンサー

JavaScriptの流れる文字

初めて質問させて頂きます。 JavaScriptで流れる文字を作成し、流すことはできたのですが、文章の一部分がうまく流れず、行ったり来たりしてスムーズになりません。 文章の長さなどは関係あるのでしょうか。 どうすれば、スムーズに流れるようになるのか教えて下さい!

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

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

どんな実装をしたかにもよるわね。 実際のコードを見ないと判断がつかないわ。

4106rm
質問者

補足

早速ご回答いただきありがとうございます。 何卒初心者なもので、申し訳ございません。 <!--スクリプト1--> <script language="javascript"> <!-- var move = 1; var spd = 400; var m1="  "; var m2="    "; var m3="  "; var m4="        "; var msg=m4+m1+m2+m3; var msg=msg+msg; function scro() { msg=msg.substring(move,msg.length)+msg.substring(0,move); document.fm.txt.value = msg; setTimeout("scro()",spd); } //--> </script> <!--ここまで--> 外部化したJavaScriptのファイルの中に、このようなコードを組み込んでおります。 var m1,var m2,var m3の部分に文章を入れて流しています。 いかがでしょうか?

その他の回答 (3)

  • cyokodog
  • ベストアンサー率56% (13/23)
回答No.4

スムーズという言葉が気になったのですが、発想を変えて以下のよう1px単位で位置移動させるというのはいかがでしょう? <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/> <script> window.onload=function(){ var $=function(id){ return document.getElementById(id) } var container=$('container') var target=$('sample') var startLeft = container.offsetWidth; var endLeft = -target.offsetWidth; target.style.left=(startLeft-100)+'px'; target.style.width=-endLeft+'px'; target.style.position='absolute'; setInterval(function(){ var left = parseInt(target.style.left) target.style.left=((left<endLeft?startLeft:left-1)+'px'); },10); } </script> <style> html,body{ margin:0; } #container{ width:100%; height:1em; overflow:hidden; background:#555; position:relative; } #sample{ color:#fff; } </style> </head> <body> <div id="container"> <span id="sample">あいうえおかいくけこ</span> </div> </body> </html>

  • zeeeg
  • ベストアンサー率55% (5/9)
回答No.3

これでスムーズになりませんか? (1) 表示させるフォントを等幅フォントにする。   また、メッセージは全角文字(又は半角文字)に統一する。 (2) フォームへの出力は一度に表示させられる文字数に制限する。  例えば、document.fm.txt.value = msg.substring(0, 20); ※蛇足ですが、var msg=msg+msg; の var は要りません。

4106rm
質問者

お礼

お礼が遅くなって、申し訳ございません。 丁寧なご回答ありがとうございます。 参考になりました!!

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

普通に動くと思うけど。 もしかしたらテキストフィールドの幅の関係で 錯覚を起こしているだけかもしれないわよ。

4106rm
質問者

お礼

お礼の返信が遅れて申し訳ございません。 ご回答ありがとうごさいます!!

関連するQ&A