MENU
カタログクリップ
本ページはプロモーションを含みます。

レンジ入力欄(スライダー)の現在値を表示する方法

2020 6/28
広告
コンピューター
2016年11月28日2020年6月28日

HTML5でサポートされたレンジ入力欄(スライダー)は、そのままではユーザーが現在値を知ることができません。ユーザーのスライダー操作を感知して、現在値を表示する方法を紹介します。javascriptを使用します。複数のスライダーにも一つのコードで対応します。

目次

デフォルトの状態

HTML5では、次のようなレンジ入力欄がサポートされました。大まかな数値を入力することが出来ます。

<input type="range" id="range" min="0" max="10" step="1" value="5">

type=”range”を指定すると表示されます。minが最小値、maxが最大値、stepがステップ、valueが初期値です。

しかし、このままではユーザーはスライダー操作中に現在の値を知ることが出来ません。入力がだいたいの値でよいのであれば、このままでも用をなすのでしょうが、しかしなんとなくユーザーを不安にさせます。

そのため、現在値を表示するようにJavascriptを書いてみます。

数値を表示するスペースを用意

まずは、隣に数値を表示するスペースを作ります。

<input type="range" id="range" min="0" max="10" step="1" value="5">
 <span id="value">5</span>

5

<span>で適当に追加しています。一意のid名をつけられれば、ここのタグは<div>でも<input type=”number”>でもなんでもよいです。

ここではスライダーに、”range”、数値表示欄に”value”というid名をつけました。

ユーザー操作を捕捉して値を書き換え

次に、ユーザー操作を感知して、数値を書き換える Javascript を追加します。

<script>
  var elem = document.getElementById('range');
  var target = document.getElementById('value');
  var rangeValue = function (elem, target) {
    return function(evt){
      target.innerHTML = elem.value;
    }
  }
  elem.addEventListener('input', rangeValue(elem, target));
</script>

なお、inputタグに onchange=”function()”を追加する方法もあります。その方が実装は楽ですが、しかしドラッグ中は数値表示が変化しません。ユーザーが値の微調整をすることができなくなりますので、お勧めしません。

targetが<span>の場合は、target.innerHTMLを書き換えますが、<input>の場合はtarget.valueを書き換えるように適宜変更してください。

動作サンプル

ドラッグ中も値が変化することを確認してください。

5

複数のスライダーに対応させる

スライダーが複数ある場合は、単純には次のようにします。

  1. 二つ目のスライダーのid名をrange2, 値表示のid名をvalue2などと別の名前にする。
  2. スクリプト中のid名もその通り変更して追加する。

追加するスクリプトは、次のようになります。functionに要素を渡しているので、functionの再定義は必要ありません。

<script>
  var elem2 = document.getElementById('range2');
  var target2 = document.getElementById('value2');
  elem2.addEventListener('input', rangeValue(elem2, target2));
</script>

まあ、スライダーが3つくらいまでならやる気が出ますが、それ以上となると面倒になってきます。

 

複数のスライダーに一つのコードで対応させる

そこで、複数のスライダーに対して、一つのコードブロックで対応させます。

まず、全てのスライダーと値表示の部品を、一つのclassの子要素にします。

<div class="range">
  <input type="range" min="0" max="10" value="5">
  <span>5</span>
</div>

ここでは、rangeというclass名を持たせることにしました。

最後に、次のスクリプトを追加します。

<script>
  var elem = document.getElementsByClassName('range');
  var rangeValue = function (elem, target) {
    return function(evt){
      target.innerHTML = elem.value;
    }
  }
  for(var i = 0, max = elem.length; i < max; i++){
    bar = elem[i].getElementsByTagName('input')[0];
    target = elem[i].getElementsByTagName('span')[0];
    bar.addEventListener('input', rangeValue(bar, target));
  }
</script>

ここでは、rangeというclass名をもつ子要素の中で、input, span要素を持つ初めの要素をそれぞれ、スライダー、値表示の部品であると仮定しています。

他の要素を使った場合は、適宜書き換えてください。例えば、<input type=”number”>を値表示の部品につかった場合は、(‘span’)[0]の部分を(‘input’)[1]にします。

動作サンプル

それぞれが独立して動作することを確認してください。

5
5
5
5
5
5


動作しましたでしょうか。
スライダーはキーボードを使わずに値を入力できますので、どんどん使ってスライダーだらけにしていきたいですね!!

 

参考文献

  • JavaScriptでコールバック関数にあらかじめ引数を渡したい!

なお、html5などのタグの対応ブラウザを調べたい場合は、次のページが大変便利です。

  • Can I use?

 

コンピューター
highlightjs

関連記事

  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
    2025年4月16日
  • AXE5400VとAX80Vの3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX80の3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000とAX1800の2つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000VとAX23Vの2つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80VとAX73Vの3つの違い。[Wi-Fiルーター]
    2025年4月5日
カテゴリー
  • コンピューター
    • gnuplot & eps
    • mac
    • matplotlib
    • wordpress
  • ホーム・家電
    • アイロン
    • オーディオ
    • オーラルケア
      • ジェットウォッシャー
      • 音波振動歯ブラシ
    • カメラ
    • カー用品
    • クリーナー
    • テレビ、レコーダー
    • ドアホン
    • メンズ美容家電
      • ラムダッシュ
    • ルンバ
    • 一覧比較
    • 工具
    • 浄水器
    • 温水洗浄便座
    • 炊飯器
    • 空気清浄機・加除湿機
    • 空調・季節家電
    • 美容家電
      • フェイスケア
      • ヘアケア
      • ボディーケア
    • 血圧計
    • 調理器具
    • 電子レンジ
  • 健康
  • 家事
    • パン
    • 料理
    • 育児
    • 食品
      • おせち
      • コーヒー
  • 書籍
  • 知識
  • 趣味
    • ペン字
    • ロードバイク・クロスバイク
    • 車
    • 鉄道模型
    • 電子工作
サイト内検索
最近の投稿
  • モナークHGとモナークM7の4つの違い。[ニコン双眼鏡]
  • ニコン モナーク M7とM5の4つの違い。[双眼鏡]
  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
  • RZ-760、GT-760、ST-760の違い。[ガス缶・CB缶]
  • RZ-730、RZ-730S、RZ-730SBK、RZ-730SWH、ST-Y450の違い。
  • TC-EA35WとTC-E123SBKの違いを比較。[スティッククリーナー]
  1. ホーム
  2. コンピューター
  3. レンジ入力欄(スライダー)の現在値を表示する方法
  • ホーム
  • プライバシーポリシー

© カタログクリップ
contact@beiznotes.org

目次