質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

270閲覧

JavaScriptでスライドショー作成

kaji120

総合スコア39

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/07/12 12:44

編集2020/07/12 12:45

以下のコードの中にあるJavaScript部分 

function changeImage(num) { if(current + num >= 0 && current + num < images.length) { current += num; ◀️ここがわかりません document.getElementById('main_image').src = images[current]; pageNum(); } };

に記載されている。current +=numが分かりません。prevとnextをクリックしたときにいif~でcurrent + num (0 + 1)される事になっているのに、その後の処理で何故current +=numをしているでしょうか?ここの処理は何をしているのでしょうか。ご回答お願い致します。

以下コード全体

<!doctype html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>5-05_slide</title> <link href="../../_common/images/favicon.ico" rel="shortcut icon"> <link href="https://fonts.googleapis.com/css?family=M+PLUS+1p:400,500" rel="stylesheet"> <link href="../../_common/css/style.css" rel="stylesheet"> <style> .slide { margin : 0 auto; border: 1px solid black; width: 720px; background-color: black; } img { max-width: 100%; } .toolbar { overflow: hidden; text-align: center; } .nav { display: flex; justify-content: center; align-items: center; padding: 16px 0; } #prev { margin-right: 0.5rem; width: 16px; height: 16px; background: url(images/arrow-left.svg) no-repeat; } #next { margin-left: 0.5rem; width: 16px; height: 16px; background: url(images/arrow-right.svg) no-repeat; } #page { color: white; } </style> </head> <body> <header> <div class="container"> <h1>スライドショー</h1> <h2>何枚目の画像か表示する</h2> </div><!-- /.container --> </header> <main> <div class="container"> <section> <div class="slide"> <div class="image_box"> <img id="main_image" src="images/image1.jpg"> </div> <div class="toolbar"> <div class="nav"> <div id="prev"></div> <div id="page"></div> <div id="next"></div> </div> </div> </div> </section> </div><!-- /.container --> </main> <footer> <div class="container"> <p>JavaScript Samples</p> </div><!-- /.container --> </footer> <script> 'use strict'; const images = ['images/image1.jpg', 'images/image2.jpg', 'images/image3.jpg', 'images/image4.jpg', 'images/image5.jpg']; let current = 0; function changeImage(num) { if(current + num >= 0 && current + num < images.length) { current += num; document.getElementById('main_image').src = images[current]; pageNum(); } }; function pageNum() { document.getElementById('page').textContent = `${current + 1}/${images.length}`; } pageNum(); document.getElementById('prev').onclick = function() { changeImage(-1); }; document.getElementById('next').onclick = function() { changeImage(1); }; </script> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

prevとnextをクリックしたときにいif~でcurrent + num (0 + 1)される事になっている

これは、if(current + num >= 0の部分のことを言っているのでしょうか?
↑この部分は、currentnumを足したときに、結果が0以上になるかどうかを判断してるだけです。

prevがクリックされたとき、numには-1を渡すように指定されているので、
このif文がないとcurrentが0のときにprevを押した場合にcurrentの値がマイナスになってしまいます。
そうならないように、current + numが0以上であれば、if文の中の処理を実行する、という処理になっています。

投稿2020/07/12 13:53

編集2020/07/12 13:55
H40831

総合スコア973

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaji120

2020/07/12 14:20

分かりやすいご回答有難うございました。if〜のところを勘違いしておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問