var count = 0;
while(count < 8){
document.images[nam].src = menu[count].src;
Wait(200);
count += 1;
}
javascriptを始めたばかりでソースにまとまりがないので一部の抜粋で申し訳ありません。
「Wait」という関数は引数ミリ秒間ループを繰り返すものです。
上記のプログラムは0.2秒間隔で画像が変わっていく、というもののつもりなんですが、
実際は200*8ミリ秒後にmenu[7].srcで指定された画像に切り替わるだけになってしまっています。
問題があるとしたらどの部分なのでしょうか?
一応ブラウザ上でのエラーは無く、menu配列の中身も確認済みです。
不明な点がありましたら補足要求お願いします。
No.2ベストアンサー
- 回答日時:
質問文中のスクリプトについては、具体的な動作がつかめないので、なぜ質問にあるような動作になるのかは、ちょっとわかりません。
Wait()関数の中身も含めたスクリプト全体がわからないことには、どうなっているかつかみにくいです。 こちらのソースを元にして修正するのであれば、スクリプト全体を見直してみる必要があるでしょう。
先の方の回答へのお礼にあるスクリプトの動作についてですが(横槍失礼します)、2点まずいところがあるように思います。
一点は、document.write()メソッドを使っている部分、もう一点はsetTimeout()関数の中で指定している処理内容の記述の仕方が気になります。
エラーの直接の原因になっているのは、ご推察の通りdocument.write()でcountを書き出している点だと思います。 document.write()は、一度ページがロードされたあとに内容を追記するということが、基本的にはできません。 ページロード後にこれを実行した場合、それまでに読み込まれた内容を破棄してその内容を書き出すため、Javascriptの内容もすべて破棄してしまい、動作しなくなるように思います(実行後の停止したページでHTMLソースを表示してみると解りやすいと思います。その時に表示されるソースが、その時点でブラウザが参照しているソースです。)。
できればこの動作は、他のやり方で確認するのが良いと思います。 元の「document.images[name].src = menu[count].src;」で確認してはいかがでしょうか。
あと、setTimeout()の書式ですが、このままだと引数が二回目以降に正常に引き渡されずにエラーになる可能性があると思います。 setTimeout()の第一引数が「"TimerEvent(name)"」と書かれていますが、ここでnameが変数として認識されない(無視される)可能性が残るでしょう。 ここは、イベントハンドラ内で変数を引数とした関数を指定するときと同じような書式に直す必要があります。
具体的には、
setTimeout("TimerEvent('"+name+"')", 1000);
のように、文字列と変数値の扱いを混同されないように修正すると良いと思います。
参考になれば。 失礼しました。
うまくいきました!
ありがとうございます。
配列使ってる部分でのミスの可能性を無くそうとText使ってみたのが裏目に出てましたね(汗
('"+name+"')の部分がまだよく理解できてないのでこれから勉強してみようと思います。
ありがとうございました。
No.1
- 回答日時:
タイマを使いましょう。
<script language="javascript">
var count = 0;
setTimeout("TimerEvent()",200);
function TimerEvent(){
document.forms[0].elements[0].value = count;
count=count + 1
if(count < 8)
setTimeout('TimerEvent()', 500)
}
</script>
<form>
<input>
</form>
お返事ありがとうございます。
タイマなんて物があったんですか。
とりあえず、ほぼコピペで試したのですがうまくいきませんでした。
画像を使ってるといまいち判り難いので以下のようなテキストでのプログラムに変更して色々試してみました。
function TimerEvent(name){
document.write(count);
count = count + 1;
if(count < 8) {
TimeID = setTimeout("TimerEvent(name)", 1000);
}
}
function In(name) {
count = 0;
TimerEvent(name);
}
実行結果は、画面に「0」という文字が出た1秒後にエラーになりました。document.write(count);の行をコメントアウトするとエラーは無くなるので恐らく2回目のdocument.writeでエラーが発生していると思うのですが、自力では対処できませんでした。
ご教授お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
¥マークの検索について
-
JavaScriptの書き方について
-
明日の日にちを表示するときは
-
<a href="#" …>の意味を教えて...
-
javascriptとApacheの設定
-
bodyにidをつける理由は何ですか?
-
ウィンドウ名の設定
-
URLでEXEを呼出した際の、引数...
-
base64encodeでの文字化けについて
-
html メールリンクにて自動ファ...
-
openerの関係が崩れてしまった...
-
iframeの中から親ページをスム...
-
cssにjavascriptを入れる?呼び...
-
ウインドウの後ろに隠れている...
-
HTML文でiframe srcで参照表示...
-
JavaScriptでiframeの内容を「...
-
日替わりメッセージの表示
-
htaでVBSのソースを書いたらエ...
-
複数のJavascriptを1つのscrip...
-
マスターページでのJavaScriopt...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptで変数を組み込みたい
-
document.getElementById
-
キャラクターコード表を出力さ...
-
特定URLからの遷移後、指定ULR...
-
この構文でよいでしょうか?
-
1から100までの平方根を表示す...
-
明日の日にちを表示するときは
-
ホームページを見る度にTOP画面...
-
location.hrefの使用方法について
-
FLASH(swf)2点のリロード毎の切...
-
コピーライトの年表示について...
-
ブログ上で複数のjavaスクリプ...
-
JavaScriptの勉強を始めました。
-
特定のURLからの訪問者を入室禁...
-
'<SCR' + 'IPT>' なぜ分割?
-
JSによるリンク先の値の取得
-
文字の置換について
-
スクロールしても画像・文字が...
-
Java scriptでFLASHを表示した...
-
CGIフォーム一定時間過ぎる...
おすすめ情報