![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
以下のコードはアイコンをクリックしたら
画像を切り替えていくスライドショーのサンプルコードです。
だいたいの意味はわかります。
ですが
「current+=num; //?
ここの意味がわかりません。
これって「current=num+current;」の意味ですが、
必要ないと思うのですが、、、実際に消去すると動作しません。
クリックしたアイコンがnextなら「1」、
prevなら「-1」されるので配列型のデータの画像の番号が
1個づつスライドされるのはわかります。
ですが「current=num+current;」する理由って何なのでしょうか?
すいませんが、詳しい方、説明の上手な方、
この部分がどういう役割をしているのか教えて下さい。
サンプルコードは以下の通りです。
※HTMLは上の3行だけです。
※JavaScriptはHTMLの範囲内に書いています。
<img src="images/image1.jpg" id="BigImg">
<img src="images/prev.png" id="preId">
<img src="images/next.png" id="nexId">
<script>
var images=['images/image1.jpg', 'images/image2.jpg',
'images/image3.jpg', 'images/image4.jpg', 'images/image5.jpg', ];
var current=0;
var changeImage=function(num){
if(current+num>=0 && current+num<images.length){
current+=num; //?
document.getElementById('BigImg').src=images[current];
}
};
document.getElementById('preId').onclick=function(){
changeImage(-1);
};
document.getElementById('nexId').onclick=function(){
changeImage(1);
};
</script>
![「【JavaScript】このコードの意味」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/772459_5c82aa946e666/M.jpg)
No.1ベストアンサー
- 回答日時:
なぜ必要無いと思ったのですか?
プログラムは根拠があって作られています。
加えるにしろ、消すにしろ、そこには「根拠」が必要です。
「なんとなく」でやっていいものではありません。
実際に、その処理の一番肝心な部分です。
それを必要無いと感じてしまったのは、あなたの理解が不十分だった、ということです。
あなたの考えを明確にすることは、間違っているところを明確にすることになり、正しく理解するために役立ちます。
スライドショー等を実現する場合、「現在の状態」を基準に「となり」を求めるのが常套手段です。
このプログラムでは、配列の添字を「現在の状態」として変数currentに記憶しています。
「となり」はcurrentを +1 または -1 することで求められます。
そして、その「となり」が次の「現在の状態」になります。
単に current + num と書いただけでは、current は前のままです。
結果をcurrent に代入しなおす必要があります。
あと、細かいことですが
> current=num+current
これは
current=current+(num)
と考えた方がいいです。
このような複合代入演算子には、他に
-= *= /=
等もあります。
足し算は num+current = current+num なのでいいのですが
引き算は num-current ≠ current-num です(一部の例外の除き)
current-=num が current= num-current なのか current= current-num なのか。間違えて覚えると大変です。
また
a *=b+1
は
a = a * b +1
ではなく
a = a * (b+1)
になります。
解答して頂きありがとうございます。
お礼が遅くなりすいません。
自己解決しました。
>なぜ必要無いと思ったのですか?
↓
ご指摘のとおり「必要ない」と思った理由を説明するために
まとめていたところ自分の勘違いに気が付きました。
今回はコードが長いので「質問が長くなると見にくい」と思い
質問内容を簡潔にしたつもりです。
ですが、肝心の「必要ないと思う理由」が記載されていないと
ご指摘の通り答えようがありません。
今後はコードが長い場合は具体的な質問内容は
捕捉に記載する、etc.、工夫するようにします。
今回は内容がよくわからない状態でアドバイスして頂きありがとうございます。
機会がありましたら、またお願いします。
追記
勘違いの内容。
関数の呼び出しと代入を勘違いしていた。
○:アイコンをクリックしたら「changeImage(関数)」を呼び出して
「-1」か「1」を「num」に代入する。
×:アイコンをクリックしたら「changeImage(変数)」に「-1」か「1」を代入する。
ーーーー
>あと、細かいことですが
> current=num+current
これは
current=current+(num)
と考えた方がいいです。
↓
理屈はわかるのですが、今回は関係ないと思うのですが。
今回は整数の足し算です。
しかもパラメーターを返す時点でプラス側とマイナス側を判定して
両方とも足し算で処理しています。
ここまで気を使う必要はないように思いますが。
ーー
今回は解答して頂きありがとうございます。
機会があれば、またお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptによるランダム画像...
-
画像の座標位置取得
-
複数のバナーをリロードする度...
-
jQueryで画像を重ねる
-
MAX関数を使ってからLEFT JOIN...
-
Vb.net2005での画像の合成方法
-
c++std::string型をTCHARに変換...
-
HTMLからimgのsrcのみを正規表...
-
IplImageのBmp変換。
-
<div ~ </div> で囲まれたテキ...
-
IFRAMEの表示/非表示を切り替え...
-
jqueryのsortableで一部ソート...
-
動的にHTMLコンテンツを吹き出...
-
変数名をどのようにつけるのが...
-
jQueryでシンプルドラッグドロ...
-
プルダウンの位置がwin/macでず...
-
クリックで色変更後に既に変更...
-
JSPでの画像ファイル表示
-
OpenCVの実行エラー
-
画像をドラッグ&ドロップで移...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.openで値の渡し方を教え...
-
this.src等のthisについて
-
imgのsrcに値を設定するには
-
jQueryでサーバー上のファイル...
-
画像の座標位置取得
-
イベントハンドラを完全に外部...
-
連番画像「次へ」「前へ」で、...
-
画像の下に説明文をつけて切り...
-
JS switch文について
-
JavaScriptでリクエストを飛ば...
-
スマートな外部javaでロールオ...
-
JavaScriptでシンプルなスライ...
-
一定時間で画像とリンク先を変...
-
javascript 時計24時間表示
-
画像と文字を同時に切り替えたい
-
これはどんなJavaScriptなので...
-
Javaにて画像を残像が残りつつ...
-
FirefoxでonMouseOver/Outの動...
-
divの背景画像を、徐々に表示さ...
-
時間によって表示される画像を...
おすすめ情報