• ベストアンサー

タイピング文字の一番後ろがおかしくなります。

改行をしているせいなのか分かりませんが、タイピング文字の各行の一番最後に 「>」とついてしまいます。 それは最後まで消えないのではなく、いったん画面に現われてから バックスペースで消したようにすぐ消えます。 一番最後の行には現われません。 直し方を教えてください。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

"<"を見つけたら">"まで、飛ばすようにするサンプル #4でも述べているように、本来はもっとちゃんとした処理をしないといけない(まあ、とりあえず版) --------------------------------------------------------------------- <script language="VBScript"> <!-- Dim counter, txt, txt_len, timerID Sub Window_onLoad() txt = txtbox.innerHTML txt_len = Len(txt) counter = 1 timerID = Window.SetInterval("typewriter()", 300) End Sub Sub typewriter() Dim cur If counter > txt_len Then cur = "" Window.ClearInterval(timerID) Else cur = "<font color='#FF0000'>_</font>" End If If Mid(txt, counter, 1) = "<" Then Do until Mid(txt, counter, 1) = ">" counter = counter + 1 Loop End if txtbox.innerHTML = Left(txt, counter) & cur counter = counter + 1 End Sub '--> </script>

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>タグの処理とは、具体的にどうすればいいのでしょうか… そうですね。 ちゃんとした処理としては、DOMでツリーをなぞるような感じになるのでしょうが、それはそれで面倒だし、 単純には、'<'を見つけたら"対応する"'>'まで一気に出力するとか これも、ちゃんとやるとなると<A>に対する</A>を見つけなきゃいけません(理想的には、中の文字を一文字ずつ出力したあとリンクにするか、リンクの中で一文字ずつ増やしてやらないといけない)ので、結構面倒です。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#1です。 txtbox.innerHTML = Left(txt, counter) & cur でもとの内容を1文字ずつ書き出していますけど、 <BR> などのタグが書き出す途中 < B R > となって、タグだと認識される前の < が表示されているのだと思います。 タグの処理をちゃんとやるか、 タグをなくして、出力時に付加してやるとかしないとだめかと思います。

noname#133433
質問者

お礼

ありがとうございました。 タグの処理とは、具体的にどうすればいいのでしょうか… もし宜しかったら教えてください。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

エディターのせいの気もしますが。。。 エディターは何を使用してますか?

noname#133433
質問者

お礼

ありがとうございます。 2stlyeの「スタンダードHTML」を使ってます。 ちなみにタグはHTMLサイトさんからコピペで使いました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ソースを挙げていただけますか

noname#133433
質問者

お礼

<script language="VBScript"> <!-- Dim counter, txt, txt_len, timerID Sub Window_onLoad() txt = txtbox.innerHTML txt_len = Len(txt) counter = 1 timerID = Window.SetInterval("typewriter()", 100) End Sub Sub typewriter() Dim cur If counter > txt_len Then cur = "" Window.ClearInterval(timerID) Else cur = "<font color='#FF0000'>_</font>" End If txtbox.innerHTML = Left(txt, counter) & cur counter = counter + 1 End Sub //--> </script> <div id="txtbox" style="width:500;"> 文字<BR> 文字<BR> 文字<BR> 文字<BR> <BR> <BR> <BR> <a href="html">エンター</a> </div> です。

関連するQ&A

専門家に質問してみよう