フォームに入力された文字をステータスバーに流したいのですがどうしてもわかりません。(動かさずに表示させることは出来ました。)
<html>
<body>
<form method="post">
文章を入力してください<br>
<input type="text" size="30" onchange="a(this)">
</form>
</body>
</html>
<script language="javascript">
function a(t){
tt=t.value;
nagasa=tt.length;
text=tt.substring(2,nagasa) + tt.substring(0,2);
window.status=text;
setTimeout("a('"+text+"')",1000);
}
自分でも何かおかしいと思うのですがどうしても思いつけません。
わかる方教えてください。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
いろいろとあるので、順番に行きます。
・a()に渡されている引数が違う
onChange時にa()にthisを渡していますが
a()内ではtextを渡しています。
onChange時にthis.valueを渡す様にしましょう。
・停止を行っていない
onChangeで行う場合、変更がある度に
a()が実行されるので、複数の文字がステータスバーを
流れる事になります。
という事で、onChangeでa()が実行される度に
その前に動いていたa()を止めないといけません。
・<script>の場所がおかしい
これは直接関係ありませんが、<script>が<html>~</html>の
外にあります。
一応動くようですが、ブラウザによっては動かないかもしれません。
a()の停止処理があるので、1個functionを間に挟んだ形での
サンプルです。
--------------- ここから -----------------
<html>
<head>
<script language="javascript">
<!--
var pid = 0; //setTimeoutのプロセスID
var doing = false; //a()実行フラグ
function loop_string( txt ){
if( doing ){
clearTimeout(pid);
}
if( txt.length > 0 ){
pid = a(txt);
} else {
doing = false;
}
}
function a(t){
var t_len = t.length;
var t_str = t.substring(2,t_len) + t.substring(0,2);
window.status = t_str;
pid = setTimeout("a('" + t_str + "')",1000);
doing = true;
}
//-->
</script>
</head>
<body>
<form method="post">
文章を入力してください<br>
<input type="text" size="30" onchange="loop_string(this.value);">
</form>
</body>
</html>
------------- ここまで ----------------
出来ました!ありがとうございます!
丁寧に説明していただき本当に助かりました。
<script>はやっぱり<html>~</html>に入れないとダメなんですね。
教えて下さる方がああいう書き方をしていたのでそのように覚えていました。これからは気をつけます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストエリアに履歴を残したい
-
テキストボックスに文字飾り表...
-
画面表示時の初期フォーカスの...
-
マイナスなら赤字で表示したい...
-
[JavaScript]ボタンを押下する...
-
textareaからiframeにしたら動...
-
HTMLファイル同士での値渡し
-
TextBoxに半角数字以外を入れた...
-
テキストボックスの背景色について
-
tabindexの取得
-
HTMLとJavaScriptで作った表示...
-
タイマーについて教えて下さい!!
-
マウスの位置をリアルタイムに取得
-
JavaScriptで作ったアプリが正...
-
VBscriptの配列変数をJavascrip...
-
【Javascript】(テキストボッ...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
localStorageでのcheckbox制御
-
onchangeイベントを強制的に発...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TextBoxに半角数字以外を入れた...
-
HTMLとJavaScriptで作った表示...
-
tabindexの取得
-
VBscriptの配列変数をJavascrip...
-
プルダウンで選択された値を別...
-
フォームの内容でリンク先URLの...
-
テキストボックスに入力した色...
-
JavaScriptで作ったアプリが正...
-
GetElementByIdがうまく取得で...
-
HTMLファイル同士での値渡し
-
jQueryのdatepickerの日付が選...
-
マイナスなら赤字で表示したい...
-
VBSからjavascript
-
テキストエリアに履歴を残したい
-
どちらかひとつのテキストボッ...
-
一部Enter無効化の方法を教えて...
-
ページ間で変数を保持したい
-
Request.Form(key)の中身をクリ...
-
javascriptのちょっとした動作...
-
JSで一つのボタンを押したとき...
おすすめ情報