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

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

詳細はこちら
HTML5

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

スライダー

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

JavaScript

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

Q&A

解決済

1回答

1665閲覧

Input rangeスライダーの自動再生について(HTML, JavaScript)

haruyasu

総合スコア8

HTML5

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

スライダー

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

JavaScript

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

0グッド

0クリップ

投稿2019/12/07 07:30

実現したいこと

スタートボタンを押すとスライダーがカウントアップし、スライダーがプログレスバーのようにスライドする。

質問

HTMLとJavaScriptを使って下記のプログラムを実装しています。
しかし、スタートボタンを押しても、input rangeのスライダーが右にスライドしていきません。
右にスライドしていくには、どうのような実装が必要でしょうか?
宜しくお願い致します。

該当のソースコード

HTML

1<input type="range" id="data-range" min="0" max="5" value="0"> 2<button id="start">start</button>

JavaScript

1var initialStart = 0; 2var initialEnd = 10; 3var step = 1; 4var count = initialStart; 5 6var dataRange = document.getElementById("data-range") 7var startButton = document.getElementById("start") 8 9var countup = () => { 10 dataRange.setAttribute("value", (count = count + step)); 11 console.log(dataRange.getAttribute("value")) 12}; 13 14startButton.addEventListener("click", () => { 15 var id = setInterval(() => { 16 countup(); 17 if (count > initialEnd - step) { 18 clearInterval(id); 19 } 20 }, 100); 21 count = initialStart; 22});

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは

以下のように修正してみると、いかがでしょうか?

修正前:

javascript

1dataRange.setAttribute("value", (count = count + step));

修正後:

javascript

1count += step; 2dataRange.value = count;

参考までに、以下は、MDN element.setAttribute注記からの引用です。

setAttribute() を使ってある属性、XUL や HTML の特別な値、および HTML の選択領域の変更は、属性がデフォルト値を特定している場合に一貫性の無い動作となります。現在の値にアクセスしたり、変更したりするにはプロパティを使用すべきです。具体例として、 elt .setAttribute('value', val ) の代わりに elt .value を使用します。

投稿2019/12/07 07:59

jun68ykt

総合スコア9058

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

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

haruyasu

2019/12/07 08:07

回答ありがとうございます。 スライダーが移動することを確認できました。
jun68ykt

2019/12/07 08:09

どういたしまして。意図通り動いたようで、よかったです????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問