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

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

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

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

受付中

パイタイマーのループ処理方法

toramaru0507
toramaru0507

総合スコア0

JavaScript

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

0回答

0評価

2クリップ

52閲覧

投稿2022/05/14 02:56

下記URLのファーストビュー右にあるタイマーのループ実装を行いと思っています。
2週間ほど悩んでおりどうしてもわからないため質問させていただきました。

https://www.odakyu.jp/feelfreetrip/

参考サイトのjsが複雑で理解できないため自分で実装を試みましたがどうしてもうまくいきません。

現状、タイマーの作成はできたのですが、サイトのようなループの動きがうまくいっていない状態です。
どなたかお力添えいただけますと幸いです。

下記現状のコードになります。
jsの知識があまりないため、コードが読みにくいかもしれませんが何卒よろしくお願いいたします。

html

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="item"> <div class="dot"></div> <svg width="33" height="33" xmlns="http://www.w3.org/2000/svg"> <g> <circle id="circle" class="timer-circle" r="14.5" cy="16.5" cx="16.5" stroke-width="1" stroke="#008b8b" fill="none" /> <circle id="circle" class="bg" r="14.5" cy="16.5" cx="16.5" stroke-width="1" stroke="#a9a9a9" fill="none" /> </g> </svg> </div> <div class="item"> <div class="dot"></div> <svg width="33" height="33" xmlns="http://www.w3.org/2000/svg"> <g> <circle id="circle" class="timer-circle circle1" r="14.5" cy="16.5" cx="16.5" stroke-width="1" stroke="#008b8b" fill="none" /> <circle id="circle" class="bg" r="14.5" cy="16.5" cx="16.5" stroke-width="1" stroke="#a9a9a9" fill="none" /> </g> </svg> </div> <div class="item"> <div class="dot"></div> <svg width="33" height="33" xmlns="http://www.w3.org/2000/svg"> <g> <circle id="circle" class="timer-circle" r="14.5" cy="16.5" cx="16.5" stroke-width="1" stroke="#008b8b" fill="none" /> <circle id="circle" class="bg" r="14.5" cy="16.5" cx="16.5" stroke-width="1" stroke="#a9a9a9" fill="none" /> </g> </svg> </div> <div class="tp--hd__counts js-mv-cts"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="script.js"></script> </body> </html>

CSS

/* タイマーの表示場所指定 */ .item { position: relative; float: left; width: 33px; height: 33px; } .timer-time { text-align:center; position: absolute; line-height: 4em; width: 100%; font-size:2.5em; } svg { -webkit-transform: rotate(-90deg); transform: rotate(-90deg); } .timer-circle { stroke-dasharray: 0px, 9999px; stroke-dashoffset: 91; stroke-opacity:0.3; transition: all 1s linear; } .bg { opacity: .1; } .dot { width: 4px; height: 4px; position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; -webkit-border-radius: 50%; border-radius: 50%; background-color: #a9a9a9; }

JavaScript

// タイマーの表示、非表示・is-acクラスの付与と削除 window.addEventListener('load', function () { viewSlide('.timer-circle'); }); function viewSlide(className, slideNo = -1) { let imgArray = document.querySelectorAll(className); if (slideNo >= 0) { imgArray[slideNo].classList.remove('is-ac'); $('.timer-circle').css('stroke-dashoffset', -91); $('.timer-circle').css({'stroke-dasharray':'0px 101px'}); } slideNo++; if (slideNo >= imgArray.length) { slideNo = 0; } imgArray[slideNo].classList.add('is-ac'); setTimeout(function () { viewSlide(className, slideNo); }, 6000); } // is-acが付与された時のタイマーの動き let time = 5; let initialOffset = '91'; let i = 0; let interval = setInterval(function () { $('.is-ac').css('stroke-dashoffset', initialOffset - (i * (initialOffset / time))); $('.is-ac').css({'stroke-dasharray':'91px 101px'}); if (i == time) { i = -1 } i++; }, 1000);

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

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