switch文の繰り返しについて
当サイトのリニューアル作業に時間をあてるため、掲示板の投稿は当分停止させていただきます。
htmlで画像をクリックすると、特定のファイルに保存した画像を順次変更したいと考えています。
ところが、画像の枚数が多く、switch文のcaseのところをfor文で繰り返したいのですが、うまく行きません。
【html側】
【Javascript側】
を
【Javascript側】
このような形にしたいと思っています。
文法上の誤りや解決策などご教授願いたく思います。
恐れ入りますがどうぞよろしくお願いいたします。
ところが、画像の枚数が多く、switch文のcaseのところをfor文で繰り返したいのですが、うまく行きません。
【html側】
<IMG ID=img1 SRC='/images/01/001.jpg' onClick='picchange1()' WIDTH='600' HEIGHT='400'>
【Javascript側】
var imgselect=1;
function picchange1(){
switch(imgselect){
case 0:
img1.src = '/images/01/001.jpg';
imgselect++;
break
case 1:
img1.src = '/images/01/002.jpg';
imgselect++;
break
case 2:
img1.src = '/images/01/003.jpg';
imgselect=0;
break
}
}
function picchange1(){
switch(imgselect){
case 0:
img1.src = '/images/01/001.jpg';
imgselect++;
break
case 1:
img1.src = '/images/01/002.jpg';
imgselect++;
break
case 2:
img1.src = '/images/01/003.jpg';
imgselect=0;
break
}
}
を
【Javascript側】
var imgselect=1;
var imagename='';
function picchange1(){
switch(imgselect){
for(i=0;i<30;i++){
case i:
imagename=zeroPadding(imgselect,3);
img1.src='/images/01/'+imagename+'.jpg';
imgselect++;
if(imgselect==31){
imgselect=0;
}
break;
}
}
}
var imagename='';
function picchange1(){
switch(imgselect){
for(i=0;i<30;i++){
case i:
imagename=zeroPadding(imgselect,3);
img1.src='/images/01/'+imagename+'.jpg';
imgselect++;
if(imgselect==31){
imgselect=0;
}
break;
}
}
}
このような形にしたいと思っています。
文法上の誤りや解決策などご教授願いたく思います。
恐れ入りますがどうぞよろしくお願いいたします。
ハイシィ さん
05月03日 23時38分
ハイシィさん、こんにちは。
数枚でしたら最初の書き方でも動作しますが、大量になってくると大変なので、より多くの画像に対応出来るように改善されたい……ということですね。
2番目の「このような形に」、という方のコードを拝見しましたが、switchやforを使わなくても、シンプルに実現できます。
maxImg の数値を変更すれば、枚数の変更もここだけで対応可能です。
もしもswitchやforを使わなければいけない特別な理由がありましたら、お知らせいただければと思います。
※ご記載いただいた仮のドメインが実際に存在するようでしたので、/から始まるパスに書き換えさせていただきました。動作としては同じになります。
数枚でしたら最初の書き方でも動作しますが、大量になってくると大変なので、より多くの画像に対応出来るように改善されたい……ということですね。
2番目の「このような形に」、という方のコードを拝見しましたが、switchやforを使わなくても、シンプルに実現できます。
var imgselect=1;
var imagename='';
function picchange1(){
var maxImg = 30;
if (imgselect >= maxImg) {
imgselect = 1;
} else {
imgselect++;
}
imagename=zeroPadding(imgselect,3);
img1.src='/images/01/'+imagename+'.jpg';
}
var imagename='';
function picchange1(){
var maxImg = 30;
if (imgselect >= maxImg) {
imgselect = 1;
} else {
imgselect++;
}
imagename=zeroPadding(imgselect,3);
img1.src='/images/01/'+imagename+'.jpg';
}
maxImg の数値を変更すれば、枚数の変更もここだけで対応可能です。
もしもswitchやforを使わなければいけない特別な理由がありましたら、お知らせいただければと思います。
※ご記載いただいた仮のドメインが実際に存在するようでしたので、/から始まるパスに書き換えさせていただきました。動作としては同じになります。
馬場誠 さん
05月04日 09時41分
馬場誠 様
早速のご返信、誠にありがとうございました。
htmlで人がクリックする度に変数の値が上昇するので、
forで繰り返しする必要がなかったのですね。
助かりました。ありがとうございました。
早速のご返信、誠にありがとうございました。
htmlで人がクリックする度に変数の値が上昇するので、
forで繰り返しする必要がなかったのですね。
助かりました。ありがとうございました。
ハイシィ さん
05月04日 11時29分
javascriptには関係しませんが、HTMLで、idにクォーテーションがついてませんよ。
恐らくこの質問だけのミスだとは思いますが。
javascriptに関しては、馬場誠 様の回答の通りだと思います。
恐らくこの質問だけのミスだとは思いますが。
javascriptに関しては、馬場誠 様の回答の通りだと思います。
便利Botの子孫 さん
05月05日 11時22分