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

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

新規登録して質問してみよう
ただいま回答率
85.47%
スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

388閲覧

jQueryでスライドショーが作動しない/Simple Image Slider

flkoba

総合スコア1

スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/10/12 03:34

前提・実現したいこと

Simple Image Sliderを使えるようにしたいです。

https://codepen.io/AndreCortellini/pen/kxwmj

こちらのコードをhtml、css、jsまるっとそのままコピペしましたが、サンプルのように自動で次のスライドに切り替わったり、クリックで次のスライドに切り替わったりせず、常に1枚目のスライドが表示されたままです。
スライドの枚数を表示している箇所も、「5/0」のような表示で、総合計数が表示されません。
クリックした分だけ、「n/0」のnが無限に増え、合計枚数は0のままです。

html、css、jsはすべて元をコピペしただけで他のcssやjsはありません。

該当のソースコード

head内に記述しているもの

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="js/slider.js"></script> <link rel="stylesheet" href="css/style.css"> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Anton" rel="stylesheet" type="text/css"> <link href="https://fonts.googleapis.com/css?family=Neucha" rel="stylesheet" type="text/css">

style.css内に記述しているもの

@charset "utf-8"; /*GLOBALS*/ *{margin:0; padding:0; list-style:none;} a{text-decoration:none; color:#666;} a:hover{color:#1bc1a3;} body, hmtl{background: #ecf0f1; font-family: 'Anton', sans-serif;} #wrapper{ width:600px; margin:50px auto; height:400px; position:relative; color:#fff; text-shadow:rgba(0,0,0,0.1) 2px 2px 0px; } #slider-wrap{ width:600px; height:400px; position:relative; overflow:hidden; } #slider-wrap ul#slider{ width:100%; height:100%; position:absolute; top:0; left:0; } #slider-wrap ul#slider li{ float:left; position:relative; width:600px; height:400px; } #slider-wrap ul#slider li > div{ position:absolute; top:20px; left:35px; } #slider-wrap ul#slider li > div h3{ font-size:36px; text-transform:uppercase; } #slider-wrap ul#slider li > div span{ font-family: Neucha, Arial, sans serif; font-size:21px; } #slider-wrap ul#slider li i{ text-align:center; line-height:400px; display:block; width:100%; font-size:90px; } /*btns*/ .btns{ position:absolute; width:50px; height:60px; top:50%; margin-top:-25px; line-height:57px; text-align:center; cursor:pointer; background:rgba(0,0,0,0.1); z-index:100; -webkit-user-select: none; -moz-user-select: none; -khtml-user-select: none; -ms-user-select: none; -webkit-transition: all 0.1s ease; -moz-transition: all 0.1s ease; -o-transition: all 0.1s ease; -ms-transition: all 0.1s ease; transition: all 0.1s ease; } .btns:hover{ background:rgba(0,0,0,0.3); } #next{right:-50px; border-radius:7px 0px 0px 7px;} #previous{left:-50px; border-radius:0px 7px 7px 7px;} #counter{ top: 30px; right:35px; width:auto; position:absolute; } #slider-wrap.active #next{right:0px;} #slider-wrap.active #previous{left:0px;} /*bar*/ #pagination-wrap{ min-width:20px; margin-top:350px; margin-left: auto; margin-right: auto; height:15px; position:relative; text-align:center; } #pagination-wrap ul { width:100%; } #pagination-wrap ul li{ margin: 0 4px; display: inline-block; width:5px; height:5px; border-radius:50%; background:#fff; opacity:0.5; position:relative; top:0; } #pagination-wrap ul li.active{ width:12px; height:12px; top:3px; opacity:1; box-shadow:rgba(0,0,0,0.1) 1px 1px 0px; } /*Header*/ h1, h2{text-shadow:none; text-align:center;} h1{ color: #666; text-transform:uppercase; font-size:36px;} h2{ color: #7f8c8d; font-family: Neucha, Arial, sans serif; font-size:18px; margin-bottom:30px;} /*ANIMATION*/ #slider-wrap ul, #pagination-wrap ul li{ -webkit-transition: all 0.3s cubic-bezier(1,.01,.32,1); -moz-transition: all 0.3s cubic-bezier(1,.01,.32,1); -o-transition: all 0.3s cubic-bezier(1,.01,.32,1); -ms-transition: all 0.3s cubic-bezier(1,.01,.32,1); transition: all 0.3s cubic-bezier(1,.01,.32,1); }

slider.js内に記述しているもの

//current position var pos = 0; //number of slides var totalSlides = $('#slider-wrap ul li').length; //get the slide width var sliderWidth = $('#slider-wrap').width(); $(document).ready(function(){ /***************** BUILD THE SLIDER *****************/ //set width to be 'x' times the number of slides $('#slider-wrap ul#slider').width(sliderWidth*totalSlides); //next slide $('#next').click(function(){ slideRight(); }); //previous slide $('#previous').click(function(){ slideLeft(); }); /************************* //*> OPTIONAL SETTINGS ************************/ //automatic slider var autoSlider = setInterval(slideRight, 3000); //for each slide $.each($('#slider-wrap ul li'), function() { //set its color var c = $(this).attr("data-color"); $(this).css("background",c); //create a pagination var li = document.createElement('li'); $('#pagination-wrap ul').append(li); }); //counter countSlides(); //pagination pagination(); //hide/show controls/btns when hover //pause automatic slide when hover $('#slider-wrap').hover( function(){ $(this).addClass('active'); clearInterval(autoSlider); }, function(){ $(this).removeClass('active'); autoSlider = setInterval(slideRight, 3000); } ); });//DOCUMENT READY /*********** SLIDE LEFT ************/ function slideLeft(){ pos--; if(pos==-1){ pos = totalSlides-1; } $('#slider-wrap ul#slider').css('left', -(sliderWidth*pos)); //*> optional countSlides(); pagination(); } /************ SLIDE RIGHT *************/ function slideRight(){ pos++; if(pos==totalSlides){ pos = 0; } $('#slider-wrap ul#slider').css('left', -(sliderWidth*pos)); //*> optional countSlides(); pagination(); } /************************ //*> OPTIONAL SETTINGS ************************/ function countSlides(){ $('#counter').html(pos+1 + ' / ' + totalSlides); } function pagination(){ $('#pagination-wrap ul li').removeClass('active'); $('#pagination-wrap ul li:eq('+pos+')').addClass('active'); }

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問者様
動かないのはJSに誤りがあるからです。
(元のがなぜ動いていたのかが不思議)

// #slider-wrap ul li こちらが誤り #slider-wrap ul#slider li

あと取得のタイミングが合っていませんでした。(CodePen上と単体の場合動きが変わる。)
(だから0となる)
修正版は以下の通り
読込順の調整もしていますのでHTMLの状態のみとさせていただきます。

HTML

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="UTF-8"> 5 <title>CodePen - Simple Image Slider</title> 6 <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"> 7 8<style> 9/*GLOBALS*/ 10*{margin:0; padding:0; list-style:none;} 11a{text-decoration:none; color:#666;} 12a:hover{color:#1bc1a3;} 13body, hmtl{background: #ecf0f1; font-family: 'Anton', sans-serif;} 14 15 16#wrapper{ 17 width:600px; 18 margin:50px auto; 19 height:400px; 20 position:relative; 21 color:#fff; 22 text-shadow:rgba(0,0,0,0.1) 2px 2px 0px; 23} 24 25#slider-wrap{ 26 width:600px; 27 height:400px; 28 position:relative; 29 overflow:hidden; 30} 31 32#slider-wrap ul#slider{ 33 width:100%; 34 height:100%; 35 36 position:absolute; 37 top:0; 38 left:0; 39} 40 41#slider-wrap ul#slider li{ 42 float:left; 43 position:relative; 44 width:600px; 45 height:400px; 46} 47 48#slider-wrap ul#slider li > div{ 49 position:absolute; 50 top:20px; 51 left:35px; 52} 53 54#slider-wrap ul#slider li > div h3{ 55 font-size:36px; 56 text-transform:uppercase; 57} 58 59#slider-wrap ul#slider li > div span{ 60 font-family: Neucha, Arial, sans serif; 61 font-size:21px; 62} 63 64#slider-wrap ul#slider li i{ 65 text-align:center; 66 line-height:400px; 67 display:block; 68 width:100%; 69 font-size:90px; 70} 71 72 73/*btns*/ 74.btns{ 75 position:absolute; 76 width:50px; 77 height:60px; 78 top:50%; 79 margin-top:-25px; 80 line-height:57px; 81 text-align:center; 82 cursor:pointer; 83 background:rgba(0,0,0,0.1); 84 z-index:100; 85 86 87 -webkit-user-select: none; 88 -moz-user-select: none; 89 -khtml-user-select: none; 90 -ms-user-select: none; 91 92 -webkit-transition: all 0.1s ease; 93 -moz-transition: all 0.1s ease; 94 -o-transition: all 0.1s ease; 95 -ms-transition: all 0.1s ease; 96 transition: all 0.1s ease; 97} 98 99.btns:hover{ 100 background:rgba(0,0,0,0.3); 101} 102 103#next{right:-50px; border-radius:7px 0px 0px 7px;} 104#previous{left:-50px; border-radius:0px 7px 7px 7px;} 105#counter{ 106 top: 30px; 107 right:35px; 108 width:auto; 109 position:absolute; 110} 111 112#slider-wrap.active #next{right:0px;} 113#slider-wrap.active #previous{left:0px;} 114 115 116/*bar*/ 117#pagination-wrap{ 118 min-width:20px; 119 margin-top:350px; 120 margin-left: auto; 121 margin-right: auto; 122 height:15px; 123 position:relative; 124 text-align:center; 125} 126 127#pagination-wrap ul { 128 width:100%; 129} 130 131#pagination-wrap ul li{ 132 margin: 0 4px; 133 display: inline-block; 134 width:5px; 135 height:5px; 136 border-radius:50%; 137 background:#fff; 138 opacity:0.5; 139 position:relative; 140 top:0; 141 142 143} 144 145#pagination-wrap ul li.active{ 146 width:12px; 147 height:12px; 148 top:3px; 149 opacity:1; 150 box-shadow:rgba(0,0,0,0.1) 1px 1px 0px; 151} 152 153/*Header*/ 154h1, h2{text-shadow:none; text-align:center;} 155h1{ color: #666; text-transform:uppercase; font-size:36px;} 156h2{ color: #7f8c8d; font-family: Neucha, Arial, sans serif; font-size:18px; margin-bottom:30px;} 157 158/*ANIMATION*/ 159#slider-wrap ul, #pagination-wrap ul li{ 160 -webkit-transition: all 0.3s cubic-bezier(1,.01,.32,1); 161 -moz-transition: all 0.3s cubic-bezier(1,.01,.32,1); 162 -o-transition: all 0.3s cubic-bezier(1,.01,.32,1); 163 -ms-transition: all 0.3s cubic-bezier(1,.01,.32,1); 164 transition: all 0.3s cubic-bezier(1,.01,.32,1); 165} 166 167</style> 168 169 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> 170 <script id="rendered-js"> 171//current position 172var pos = 0; 173//number of slides 174var totalSlides = 0; 175//get the slide width 176var sliderWidth = $('#slider-wrap').width(); 177 178$(document).ready(function () { 179 totalSlides = $('#slider-wrap ul#slider li').length; 180 sliderWidth = $('#slider-wrap').width(); 181 182 /***************** 183 BUILD THE SLIDER 184 *****************/ 185 //set width to be 'x' times the number of slides 186 $('#slider-wrap ul#slider').width(sliderWidth * totalSlides); 187 188 //next slide 189 $('#next').click(function () { 190 slideRight(); 191 }); 192 193 //previous slide 194 $('#previous').click(function () { 195 slideLeft(); 196 }); 197 198 199 200 /************************* 201 //*> OPTIONAL SETTINGS 202 ************************/ 203 //automatic slider 204 var autoSlider = setInterval(slideRight, 3000); 205 206 //for each slide 207 $.each($('#slider-wrap ul#slider li'), function () { 208 //set its color 209 var c = $(this).attr("data-color"); 210 $(this).css("background", c); 211 212 //create a pagination 213 var li = document.createElement('li'); 214 $('#pagination-wrap ul').append(li); 215 }); 216 217 //counter 218 countSlides(); 219 220 //pagination 221 pagination(); 222 223 //hide/show controls/btns when hover 224 //pause automatic slide when hover 225 $('#slider-wrap').hover( 226 function () {$(this).addClass('active');clearInterval(autoSlider);}, 227 function () {$(this).removeClass('active');autoSlider = setInterval(slideRight, 3000);}); 228 229}); //DOCUMENT READY 230 231/*********** 232 SLIDE LEFT 233************/ 234function slideLeft() { 235 pos--; 236 if (pos == -1) {pos = totalSlides - 1;} 237 $('#slider-wrap ul#slider').css('left', -(sliderWidth * pos)); 238 239 //*> optional 240 countSlides(); 241 pagination(); 242} 243 244 245/************ 246 SLIDE RIGHT 247 *************/ 248function slideRight() { 249 pos++; 250 if (pos == totalSlides) {pos = 0;} 251 $('#slider-wrap ul#slider').css('left', -(sliderWidth * pos)); 252 253 //*> optional 254 countSlides(); 255 pagination(); 256} 257 258/************************ 259 //*> OPTIONAL SETTINGS 260 ************************/ 261function countSlides() { 262 $('#counter').html(pos + 1 + ' / ' + totalSlides); 263} 264 265function pagination() { 266 $('#pagination-wrap ul li').removeClass('active'); 267 $('#pagination-wrap ul li:eq(' + pos + ')').addClass('active'); 268} 269//# sourceURL=pen.js 270 </script> 271 272</head> 273 274<body> 275<div id="wrapper"> 276 <div id="slider-wrap"> 277 <ul id="slider"> 278 <li data-color="#1abc9c"> 279 <div> 280 <h3>Slide #1</h3> 281 <span>Sub-title #1</span> 282 </div> 283 <i class="fa fa-image"></i> 284 </li> 285 286 <li data-color="#3498db"> 287 <div> 288 <h3>Slide #2</h3> 289 <span>Sub-title #2</span> 290 </div> 291 <i class="fa fa-gears"></i> 292 </li> 293 294 <li data-color="#9b59b6"> 295 <div> 296 <h3>Slide #3</h3> 297 <span>Sub-title #3</span> 298 </div> 299 <i class="fa fa-sliders"></i> 300 </li> 301 302 <li data-color="#34495e"> 303 <div> 304 <h3>Slide #4</h3> 305 <span>Sub-title #4</span> 306 </div> 307 <i class="fa fa-code"></i> 308 </li> 309 310 <li data-color="#e74c3c"> 311 <div> 312 <h3>Slide #5</h3> 313 <span>Sub-title #5</span> 314 </div> 315 <i class="fa fa-microphone-slash"></i> 316 </li> 317 318 319 </ul> 320 321 <!--controls--> 322 <div class="btns" id="next"><i class="fa fa-arrow-right"></i></div> 323 <div class="btns" id="previous"><i class="fa fa-arrow-left"></i></div> 324 <div id="counter"></div> 325 326 <div id="pagination-wrap"> 327 <ul> 328 </ul> 329 </div> 330 <!--controls--> 331 </div> 332 </div> 333</body> 334</html> 335 336 337

投稿2020/10/12 09:19

kuma_kuma_

総合スコア2506

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

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

flkoba

2020/10/12 09:52

ありがとうございます! これで解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問