🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

jQuery

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

Q&A

1回答

1194閲覧

jQuery 可視範囲に入ってから処理を実行する(グラフが伸びる処理)

manaw

総合スコア7

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2020/12/10 04:01

Java Scriptの記述について、数時間悩みましたがうまくいきませんので、お知恵を貸してください。

横に伸びるグラフをサイトに追加したいと思っています。[こちら](https://deshinon.com/2019/03/02/kopipe-web-bou-gragh/)の横棒グラフのコードにて問題なく動くのですが、「DOMを読み込んで○秒後」ではなく、グラフを囲む要素が可視範囲に入ったら処理を実行したく試行錯誤しておりますがうまくいきません。

html

1<div class='wrapper'> 2 <div class='bar'> 3 <div class='bar-info japanese' data-total='80'> 4 Japanese 5 <span class='percent'>80</span> 6 </div> 7 </div> 8 9 <div class='bar'> 10 <div class='bar-info math' data-total='80'> 11 Math 12 <span class='percent'>80</span> 13 </div> 14 </div> 15 16 <div class='bar'> 17 <div class='bar-info science' data-total='60'> 18 Science 19 <span class='percent'>60</span> 20 </div> 21 </div> 22 23 <div class='bar'> 24 <div class='bar-info history' data-total='70'> 25 History 26 <span class='percent'>70</span> 27 </div> 28 </div> 29</div> 30 31<script 32 src="https://code.jquery.com/jquery-3.5.1.min.js" 33 integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" 34 crossorigin="anonymous"></script> 35<script src="js/app.js"></script> 36

Java

1$(document).ready(function() { 2 function skillSet() { 3 $('.bar-info').each(function() { 4 total = $(this).data("total"); 5 $(this).css("width", total + "%"); 6 }); 7 $('.percent').each(function() { 8 var $this = $(this); 9 $({ 10 Counter: 10 11 }).animate({ 12 Counter: $this.text() 13 }, { 14 duration: 3000, 15 easing: 'swing', 16 step: function() { 17 $this.text(Math.ceil(this.Counter) + "%"); 18 } 19 }); 20 }); 21 }; 22 $(window).scroll(function (){ 23 $(".wrapper").each(function(){ 24 var ePosition = $(this).offset().top; 25 var scrolls = $(window).scrollTop(); 26 var windowHeight = $(window).height(); 27 if (scrolls > ePosition - windowHeight + windowHeight/5){ 28 skillSet(); 29 } 30 }); 31 }); 32}); 33

希望する動き
・class="wrapper"が可視範囲に入ってからグラフが横に伸びる(widthの追加)
・10%からスタートし、class="percent"の数値まで数字が増えて表示される
例:グラフの幅10%&10%と表示→1%ずつカウントが増えながらグラフが伸びる→70%の位置でグラフが止まり、70%と表示

現状
・グラフが横に伸びる処理はできている
・表示されるパーセンテージが10%のまま
例:グラフの幅10%&10%と表示→10%と表示されたままグラフが伸びる→70%の位置でグラフが止まり、10%と表示

どなたか修正必要箇所をご指導ください。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

現在animateメソッドのdurationが3000になっていますが、これを0にしたらすぐ動くはずです。それを実現してから次のステップに進むといいのでは。

あと、counterの上限値が10になっているので、10%までしか進まないはずです。

投稿2020/12/10 06:13

FKM

総合スコア3647

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

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

manaw

2020/12/10 11:04

コメントありががとうございます。Counterの値は初期の状態で10となっており、animate({ Counter: $this.text() }で<span class='percent'>80</span>の値を取得します。可視範囲に入ってから関数を実行するのではなく、ページロード時の実行ではグラフの幅もパーセンテージの表示も成功します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問