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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

jQuery

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

Q&A

0回答

702閲覧

jQuery 一定の位置までスクロールをした後に発火するはずのグラフのパーセンテージ処理がうまくいかない

otutaka

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

jQuery

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

0グッド

0クリップ

投稿2021/10/07 23:19

前提・実現したいこと

・ある特定の場所までスクロールをしたらグラフがそれぞれの値に動くようにしたい
・クラス名percentが10%からスタートし、class="percent"の数値まで数字が増えて表示される

下記のサイト様の11番目の横棒グラフを参考に作成。
https://deshinon.com/2019/03/02/kopipe-web-bou-gragh/

もし可能であるならば、if文の条件は一緒なのでスキルバーの動きとパーセンテージの動きのコードをまとめられたらとも考えております。
(1つのif文で2つの処理は可能なのでしょうか)

発生している問題

1.単位に%がつかない 2.最初から数字が目的の値となっている(理想は10%から70%に増えてほしいのに、最初から70という値になっている) 3.高さに応じて正常に動作する時としない時がある。(ページのトップにあれば正常に動くが、例えばスクロールをしなくては見れない位置にある時は正常に動かないで2のようになる) 4.スキルバーについては正常に作動している(ある一定の位置まで来たら発火し動作してくれる)

該当のソースコード

HTML5

1<h1 class="skill">HTML</h1> 2<div class="bar"> 3    <div class="bar-info" data-total="60"></div> 4    <div class="percent">60</div> 5</div> 6<h1 class="skill">CSS</h1> 7<div class="bar"> 8    <div class="bar-info" data-total="50"></div> 9    <div class="percent">50</div> 10</div>

jquery

1$(window).on('scroll', function (){ 2 3 var barInfo = $('.bar-info'); 4 var percent = $('.percent'); 5//グラフのバーの動作 6 barInfo.each(function () { 7 8 var barInfoOffset = $(this).offset().top; 9 var scrollPos = $(window).scrollTop(); 10 var wh = $(window).height(); 11 var total = $(this).data("total"); 12 var $this = $(this); 13 14 if(scrollPos > barInfoOffset - wh + (wh / 4) ){ 15 $this.css("width", total + "%"); 16 } 17 }); 18 19//グラフのパーセンテージの動作 20 percent.each(function () { 21 var percentOffset = $(this).offset().top; 22 var scrollPos = $(window).scrollTop(); 23 var wh = $(window).height(); 24 var $this = $(this); 25 26 if(scrollPos > percentOffset - wh + (wh / 4) ){ 27 $({ 28 Counter: 10 29 }).animate({ 30 Counter: $this.text() 31 }, { 32 duration: 3000, 33 easing: 'swing', 34 step: function() { 35 $this.text(Math.ceil(this.Counter) + "%"); 36 } 37 }); 38 } 39 });

大変お手数をおかけいたしますが、原因究明のためどなた様かご教示いただけますと幸いでございます。
また、不足している情報がございましたらこちらもご教示くださいませ。
何卒宜しくお願いいたします。

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

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

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

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

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

FKM

2021/10/18 09:04

外側の$(window).on('scroll', function (){…})を外したらどうなりますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問