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で質問しましょう!
似たような質問が見つかりました
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- HTML・CSS htmlについて質問です! 写真のように写真の部分が?になってしまいます。 ファイルもしっかり選べて 1 2023/07/09 21:17
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- C言語・C++・C# C言語 3 2022/11/09 13:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CGIフォーム一定時間過ぎる...
-
こんにちは、23歳、事務系のOL...
-
HPビルダーで『最終更新日時』...
-
読み込むたびに画像を順番に表...
-
ページ内文字列の置換について
-
特定のURLからの訪問者を入室禁...
-
<a href="#" …>の意味を教えて...
-
別ファイルのfunctionの読み込み方
-
JavaScriptからVBScriptの呼び...
-
<script>...</script> 要素の内
-
GIFアニメの動きが止まってしま...
-
相対パスと絶対パスの速度
-
SCRIPT5007: 未定義または NULL...
-
bodyにidをつける理由は何ですか?
-
javascript外部読み込みの際の引数
-
cssにjavascriptを入れる?呼び...
-
ホームページ上に『位置固定』...
-
pythonのWebスクレイピングでfi...
-
html メールリンクにて自動ファ...
-
Safariで<iframe>のinnerHTMLを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
¥マークの検索について
-
CGIフォーム一定時間過ぎる...
-
document.getElementById
-
javascriptで変数を組み込みたい
-
location.hrefが動かない・・・
-
明日の日にちを表示するときは
-
ページ内文字列の置換について
-
JavaScriptの入れ子
-
1から100までの平方根を表示す...
-
カウントダウンとカウントアッ...
-
JSによるリンク先の値の取得
-
特定のURLからの訪問者を入室禁...
-
IEでiframe内のcookieを保持
-
16進n桁の文字列変換の方法は?
-
ブラウザを閉じないようにする...
-
promptを使用した年齢認証
-
<a href="#" …>の意味を教えて...
-
bodyにidをつける理由は何ですか?
-
別ファイルのfunctionの読み込み方
-
getElementsByNameで要素が取得...
おすすめ情報