前提・実現したいこと
JavaScriptのif文のループ処理をfor文で書きたい。
JavaScriptでif文を利用した背景画像のスライドショーをfor文に書き換えたいです。。
JavaScriptでif文を使い、背景画像のスライドショーを作りました。
調べて出てきたものをほとんど使いまわしているだけなのでfor文を使ったものに書き換えてみたいと書き換えたのはいいのですが、うまく動いてくれません。
if文を使ったスライドショー(動く)
<img id="back" src="photo1.jpg"> <script> var photo = new Array("photo1.jpg","photo2.jpg","photo3.jpg","photo4.jpg"); var num = 1; slide(); function slide(){ if (num == 3){ num = 0; } else { num ++; } document.getElementById("back").src=photo[num]; setTimeout("slide()",2500); } </script>
調べたものの使いまわしなのでこれはうまく動いてくれました。html内に書いています。
for文に書き換えたコード(動かない)
htmlとjsファイルに分けました。
html
1 <img id="back" src="photo1.jpg"> 2 <script type="text/javascript" src="slide.js"></script>
JavaScript
1var photo = new Array("photo1.jpg","photo2.jpg","photo3.jpg","photo4.jpg"); 2var num = 0; 3 4function slide(){ 5 for(var i = 0; i < 10; i++){ 6 num ++; 7 document.getElementById("back").src=photo[num]; 8 var id = setTimeout(slide(),2500) 9 }; 10 if(i > 15){ 11 clearTimeout(id); 12 } 13 } 14 15slide(); 16
上記のコードをはじめのhtml内に書いたものと同様に動くようにするにはどこを修正すればいいのでしょうか。
質問者さんのやろうとしていることと、for文って相性悪いと思うんですけど、
for文じゃないとだめでしょうか?
for文である必要は全くないのですが、初めのif文を使ったものが調べたものをそのまま使ったものでしたのでできるのであれば書き換えてみたいと考えました。
初学者のためあまり相性など考えることができていませんでした。
setTimeoutを使っているので、
for文で書くよりかは、最初のif文のソースのほうが
見てわかりやすいコードになると思います。
教えていただきありがとうございます。
ここはif文を使用してfor文はまた別のところで使用してみようと思います。
slide関数が実行され、中のfor文が実行された際、for文は一瞬で1~9の値を返してしまうため、そもそもこのパターンの応用はできないと思います。ただ、応用しようとすることはとても良いことだと思います。
応用ができないとは知りませんでした。ありがとうございます。
勉強用で作っているためfor文はまた別のところで使用してみます。
回答1件
あなたの回答
tips
プレビュー