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

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

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

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

Q&A

解決済

1回答

758閲覧

スライドのナビゲーション数値が取得できません。

oscar1164

総合スコア6

jQuery

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

0グッド

0クリップ

投稿2020/07/21 12:50

編集2020/07/21 21:39

##前提・実現したいこと
メインビジュアルとして設定しているスライドにナビゲーションを設置したい
##発生している問題
クリックしたドット(sldNavDot)に付与しているDataの数値を取得できません。
##該当のソースコード

<section class="mainvisual"> <div class="mainvisual__container"> <div id="sldWrapper" class="mainvisual__wrapper"> <div id="sld1" class="mainvisual__item sldFade"> <img src="./img/mv.jpg" alt=""> <p class="sldText"> くつろぎの環境で行う<br> からだに優しい<br> 内視鏡検査 </p> </div> <div id="sld2" class="mainvisual__item sldFade"> <img src="./img/mv2.jpg" alt=""> <p class="sldText"> 胃腸と消化器全般の<br> 専門医として </p> </div> <div id="sld3" class="mainvisual__item sldFade"> <img src="./img/mv3.jpg" alt=""> <p class="sldText"> 地元の皆さまの<br> かかりつけ医として </p> </div> <div id="sldNav"> </div> </div> <div class="mainvisual__info__wrapper"> <div class="mainvisual__info"> <p class="mainvisual__info__title">お知らせ</p> <div class="mainvisual__info__text"> <p>2020.03.30</p> <a href="#">発熱・呼吸器症状のある患者様へ</a> </div> </div> </div> </section>
//mainvisual画像切り替え var sldWrap = $('#sldWrapper'), sld = '.sldFade', sldPre = 'sld', sldNavDot = '.sldNavDot', sldNav = '#sldNav', sldNavPre = 'sldNav', sldTime = 2000, sldWait = 5000, delayTime = 1000, sldTimer; $.fn.slideFade = function () { return this.each(function (i, elem) { clearTimeout(sldTimer); var sldNum = parseInt(sldWrap.data('sldNum')); $(sld + '.current').stop().animate(); $(sld).not(`#${sldPre}${sldNum}`).fadeOut(sldTime).removeClass('current'); $(`#${sldPre}${sldNum} .sldText`).hide(); $(`#${sldPre}${sldNum} >img`).removeClass('zoomImg'); $(`#${sldPre}${sldNum}`).fadeIn(sldTime).addClass('current'); $(`#${sldPre}${sldNum} >img`).addClass('zoomImg'); $(`#${sldPre}${sldNum} .sldText`).delay(delayTime).fadeIn(sldTime); sldTimer = setTimeout(function () { sldNum++; if (sldNum > $(sld).length) { sldNum = 1; } sldWrap.data('sldNum', sldNum); sldWrap.slideFade(); }, sldWait); $(sldNavDot).not(`#${sldNavPre}${sldNum}`).removeClass('sldNavActive'); $(`#${sldNavPre}${sldNum}`).addClass('sldNavActive'); }); }; //sldNavDotをクリックしたときのfunction sldWrap.on('click', '.sldNavDot', function (){ var sldNavNum = parseInt($(this).data('sldNum')); setTimeout(function () { sldWrap.data('sldNum', sldNavNum).slideFade(); }, 0); }); //load時のfunction $(window).load(function () { var sldCount = 1; var sldNavClass; //sldNavDot生成 $(sld).each(function () { if (sldCount === 1) { sldNavClass = 'sldNavDot sldNavActive'; } else { sldNavClass = 'sldNavDot' } $(sldNav).append('<div id="sldNav' + sldCount + '" class="' + sldNavClass + '" data-sldNum="' + sldCount + '">&nbsp;</div>'); sldCount++; }); setTimeout(function () { sldWrap.data('sldNum', 1).slideFade(); }, 0); });

数値の取得方法がまずいのではと思いますが、うまくいきません。
よろしくお願いします。

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

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

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

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

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

kei344

2020/07/21 14:41

(質問文は編集できます)HTMLも提示されてはいかがでしょう。
guest

回答1

0

ベストアンサー

データ属性にcamelCaseの属性名は使わないほうが良いようです。(JavaScriptからアクセスする際に別の意味になる)

js

1 //sldNavDotをクリックしたときのfunction 2 sldWrap.on('click', '.sldNavDot', function (e){ 3 var sldNavNum = parseInt($(this).data('sldnum')); // sldNum ⇒ sldnum なら読めた 4console.log(sldNavNum,this); 5 setTimeout(function () { 6 sldWrap.data('sldNum', sldNavNum).slideFade(); 7 }, 0); 8 });

【データ属性の使用 - ウェブ開発を学ぶ | MDN】
https://developer.mozilla.org/ja/docs/Learn/HTML/Howto/Use_data_attributes#JavaScript_access

dataset オブジェクトを通して data 属性を取得するには、属性名の data- より後の部分を使用して取得します (なお、ダッシュは camelCase に変換されます)。

投稿2020/07/22 03:00

kei344

総合スコア69608

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

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

oscar1164

2020/07/22 11:44

camelCaseが原因だとは思いも付きませんでした。 jQueryを使うときは思考停止でcamelCaseを使用していたので、気をつけたいと思います。 勉強になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問