以下のコードをを見てアドバイス願います。
javascriptのことなのですが、
具体的に言うと
var isChanging = false;
このコードで定義された変数を直後の
if (isChanging === true)
という文ですが、
isChangingはfalseです!!って言った後に、
もしtrueなら、、、となるのが、理解できません。
例えるなら、ミステリー小説で犯人はAさんでない!!家族で夕食を食べていたというアリバイがあって家族もそれを証言し不審な点もないからだ。と言った後に、もしそのアリバイがなく、犯人になりえるとしたら、、、
みたいに一度確定したことを、もし~~~ならとなっているのが理解できません。
質問の意図はわかっていただけましたでしょうか?
足りない点がありましたら、指摘お願いします。
javascript
1// スライダーに表示する画像のパス 2var imgList = [ 3 "images/img01.jpg", 4 "images/img02.jpg", 5 "images/img03.jpg", 6 "images/img04.jpg" 7]; 8 9// 画像とナビの要素を自動で追加 10for(var i = 0; i < imgList.length; i++) { 11 // li要素を取得 12 var slide = document.createElement("li"); 13 // li要素の中に画像タグを埋め込む 14 slide.innerHTML = "<img src='" + imgList[i] + "'>"; 15 // li要素をクラス名「slider-inner」の子要素として追加 16 document.getElementsByClassName("slider-inner")[0].appendChild(slide); 17 18 // li要素を取得 19 var nav = document.createElement("li"); 20 // プロパティ「data-nav-index」に数値を割り振る 21 nav.setAttribute("data-nav-index", i); 22 // li要素をクラス名「nav」の子要素として追加 23 document.getElementsByClassName("nav")[0].appendChild(nav); 24} 25 26// スライドの数を取得(処理のために-1する) 27var length = imgList.length - 1; 28// クラス名「imageSlide」に画像の1枚の要素を格納 29var imageSlide = document.getElementsByClassName("slider-inner")[0].getElementsByTagName("li"); 30// クラス名「dotNavigation」にドットナビの1つの要素を格納 31var dotNavigation = document.getElementsByClassName("nav")[0].getElementsByTagName("li"); 32// 「現在○○枚目のスライドを表示している」というインデックス番号を格納する変数 33var nowIndex = 0; 34// 現在表示されている画像とドットナビにクラス名を付ける 35imageSlide[nowIndex].classList.add("show"); 36dotNavigation[nowIndex].classList.add("current"); 37 38 39 40//見ていただきたいところです 41 42 43 44// スライドがアニメーション中か判断するフラグ 45var isChanging = false; 46// スライドのsetTimeoutを管理するタイマー 47var slideTimer; 48// スライド切り替え時に呼び出す関数 49function sliderSlide(val) { 50 if (isChanging === true) { 51 return false; 52 } 53 isChanging = true; 54 // 現在表示している画像とナビからクラス名を削除 55 imageSlide[nowIndex].classList.remove("show"); 56 dotNavigation[nowIndex].classList.remove("current"); 57 nowIndex = val; 58 // 次に表示するスライドとナビにカレントクラスを設定 59 imageSlide[nowIndex].classList.add("show"); 60 dotNavigation[nowIndex].classList.add("current"); 61 // アニメーションが終わるタイミングでisChangingのステータスをfalseに 62 slideTimer = setTimeout(function(){ 63 isChanging = false; 64 }, 600); 65} 66 67// 左矢印のナビをクリックした時のイベント 68document.getElementById("arrow-prev").addEventListener("click", function(){ 69 var index = nowIndex - 1; 70 if(index < 0){ 71 index = length; 72 } 73 sliderSlide(index); 74}, false); 75// 右矢印のナビをクリックした時のイベント 76document.getElementById("arrow-next").addEventListener("click", function(){ 77 var index = nowIndex + 1; 78 if(index > length){ 79 index = 0; 80 } 81 sliderSlide(index); 82}, false); 83// ドットナビをクリックした時のイベントを作成 84for(var i = 0; i < dotNavigation.length; i++) { 85 // データ属性のインデックス番号を元にスライドを行う 86 dotNavigation[i].addEventListener("click", function(){ 87 var index = Number(this.getAttribute("data-nav-index")); 88 sliderSlide(index); 89 }, false); 90}
html
1// スライダーに表示する画像のパス 2var imgList = [ 3 "images/img01.jpg", 4 "images/img02.jpg", 5 "images/img03.jpg", 6 "images/img04.jpg" 7]; 8 9// 画像とナビの要素を自動で追加 10for(var i = 0; i < imgList.length; i++) { 11 // li要素を取得 12 var slide = document.createElement("li"); 13 // li要素の中に画像タグを埋め込む 14 slide.innerHTML = "<img src='" + imgList[i] + "'>"; 15 // li要素をクラス名「slider-inner」の子要素として追加 16 document.getElementsByClassName("slider-inner")[0].appendChild(slide); 17 18 // li要素を取得 19 var nav = document.createElement("li"); 20 // プロパティ「data-nav-index」に数値を割り振る 21 nav.setAttribute("data-nav-index", i); 22 // li要素をクラス名「nav」の子要素として追加 23 document.getElementsByClassName("nav")[0].appendChild(nav); 24} 25 26// スライドの数を取得(処理のために-1する) 27var length = imgList.length - 1; 28// クラス名「imageSlide」に画像の1枚の要素を格納 29var imageSlide = document.getElementsByClassName("slider-inner")[0].getElementsByTagName("li"); 30// クラス名「dotNavigation」にドットナビの1つの要素を格納 31var dotNavigation = document.getElementsByClassName("nav")[0].getElementsByTagName("li"); 32// 「現在○○枚目のスライドを表示している」というインデックス番号を格納する変数 33var nowIndex = 0; 34// 現在表示されている画像とドットナビにクラス名を付ける 35imageSlide[nowIndex].classList.add("show"); 36dotNavigation[nowIndex].classList.add("current"); 37// スライドがアニメーション中か判断するフラグ 38var isChanging = false; 39// スライドのsetTimeoutを管理するタイマー 40var slideTimer; 41// スライド切り替え時に呼び出す関数 42function sliderSlide(val) { 43 if (isChanging === true) { 44 return false; 45 } 46 isChanging = true; 47 // 現在表示している画像とナビからクラス名を削除 48 imageSlide[nowIndex].classList.remove("show"); 49 dotNavigation[nowIndex].classList.remove("current"); 50 nowIndex = val; 51 // 次に表示するスライドとナビにカレントクラスを設定 52 imageSlide[nowIndex].classList.add("show"); 53 dotNavigation[nowIndex].classList.add("current"); 54 // アニメーションが終わるタイミングでisChangingのステータスをfalseに 55 slideTimer = setTimeout(function(){ 56 isChanging = false; 57 }, 600); 58} 59 60// 左矢印のナビをクリックした時のイベント 61document.getElementById("arrow-prev").addEventListener("click", function(){ 62 var index = nowIndex - 1; 63 if(index < 0){ 64 index = length; 65 } 66 sliderSlide(index); 67}, false); 68// 右矢印のナビをクリックした時のイベント 69document.getElementById("arrow-next").addEventListener("click", function(){ 70 var index = nowIndex + 1; 71 if(index > length){ 72 index = 0; 73 } 74 sliderSlide(index); 75}, false); 76// ドットナビをクリックした時のイベントを作成 77for(var i = 0; i < dotNavigation.length; i++) { 78 // データ属性のインデックス番号を元にスライドを行う 79 dotNavigation[i].addEventListener("click", function(){ 80 var index = Number(this.getAttribute("data-nav-index")); 81 sliderSlide(index); 82 }, false); 83}
css
1.slider { 2 position: relative; 3 width: 640px; 4 height: 480px; 5 margin: 0 auto 6} 7 8.slider .slider-inner { 9 position: relative; 10 top: 0; 11 left: 0; 12 width: 100%; 13 height: 100% 14} 15 16.slider .slider-inner li { 17 position: absolute; 18 top: 0; 19 left: 0; 20 width: 100%; 21 height: 100%; 22 opacity: 0; 23 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; 24 -webkit-transition: all 600ms; 25 transition: all 600ms; 26 pointer-events: none 27} 28 29.slider .slider-inner li.show { 30 opacity: 1; 31 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; 32 z-index: 1; 33 pointer-events: auto 34} 35 36.slider .nav { 37 width: 100%; 38 margin-top: 20px; 39 text-align: center; 40 font-size: 0 41} 42 43.slider .nav li { 44 display: inline-block; 45 width: 15px; 46 height: 15px; 47 margin: 0 5px; 48 border-radius: 15px; 49 background: #ddd; 50 cursor: pointer; 51 -webkit-transition: background 400ms; 52 transition: background 400ms 53} 54 55.slider .nav li:hover { 56 background: #aaa 57} 58 59.slider .nav li.current { 60 background: #aaa 61} 62 63.slider .arrow { 64 position: absolute; 65 top: 50%; 66 font-size: 20px; 67 cursor: pointer; 68 width: 20px; 69 height: 40px; 70 background: #000; 71 color: #fff; 72 line-height: 40px; 73 padding: 5px; 74 -webkit-transition: opacity 400ms; 75 transition: opacity 400ms 76} 77 78.slider .arrow:hover { 79 opacity: .7; 80 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)" 81} 82 83.slider .arrow#arrow-prev { 84 left: 0; 85 -webkit-transform: translate(-100%,-50%); 86 transform: translate(-100%,-50%) 87} 88 89.slider .arrow#arrow-next { 90 right: 0; 91 -webkit-transform: translate(100%,-50%); 92 transform: translate(100%,-50%) 93}
css
1@charset "utf-8"; 2/* 3html5doctor.com Reset Stylesheet 4v1.6.1 5Last Updated: 2010-09-17 6Author: Richard Clark - http://richclarkdesign.com 7Twitter: @rich_clark 8*/ 9html, body, div, span, object, iframe, 10h1, h2, h3, h4, h5, h6, p, blockquote, pre, 11abbr, address, cite, code, 12del, dfn, em, img, ins, kbd, q, samp, 13small, strong, sub, sup, var, 14b, i, 15dl, dt, dd, ol, ul, li, 16fieldset, form, label, legend, 17table, caption, tbody, tfoot, thead, tr, th, td, 18article, aside, canvas, details, figcaption, figure, 19footer, header, hgroup, menu, nav, section, summary, 20time, mark, audio, video { 21 margin: 0; 22 padding: 0; 23 border: 0; 24 outline: 0; 25 font-size: 100%; 26 vertical-align: baseline; 27 background: transparent; 28} 29 30body { 31 line-height: 1; 32} 33 34article, aside, details, figcaption, figure, 35footer, header, hgroup, menu, nav, section { 36 display: block; 37} 38 39nav ul { 40 list-style: none; 41} 42 43ul li { 44 list-style-type: none; 45} 46 47blockquote, q { 48 quotes: none; 49} 50 51blockquote:before, blockquote:after, 52q:before, q:after { 53 content: ''; 54 content: none; 55} 56 57a { 58 margin: 0; 59 padding: 0; 60 font-size: 100%; 61 vertical-align: baseline; 62 background: transparent; 63} 64 65/* change colours to suit your needs */ 66ins { 67 background-color: #ff9; 68 color: #000; 69 text-decoration: none; 70} 71 72/* change colours to suit your needs */ 73mark { 74 background-color: #ff9; 75 color: #000; 76 font-style: italic; 77 font-weight: bold; 78} 79 80del { 81 text-decoration: line-through; 82} 83 84abbr[title], dfn[title] { 85 border-bottom: 1px dotted; 86 cursor: help; 87} 88 89table { 90 border-collapse: collapse; 91 border-spacing: 0; 92} 93 94/* change border colour to suit your needs */ 95hr { 96 display: block; 97 height: 1px; 98 border: 0; 99 border-top: 1px solid #cccccc; 100 margin: 1em 0; 101 padding: 0; 102} 103 104input, select { 105 vertical-align: middle; 106} 107
回答1件
あなたの回答
tips
プレビュー