前提・実現したいこと
Javascriptを綺麗に書くことに関する質問です。
レンジスライダーを3つ使用し、それぞれのスライダーの横にレンジの値を表示させています。
ソースコードに同じ処理を3つずつ書いており、一つにまとめたいのですがわかりません。
初心者ですみませんが、よろしくお願いいたします。
該当のソースコード
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="utf-8"> 6 <title>数値入力のサンプル</title> 7 <script src="js/main.js" charset="utf-8"></script> 8</head> 9 10<body> 11 12 <input type="range" id="range1" class="range" min="0" max="255" step="1" value="0"> 13 <span id="value1" class="value">0</span> 14 <input type="range" id="range2" class="range" min="0" max="255" step="1" value="0"> 15 <span id="value2" class="value">0</span> 16 <input type="range" id="range3" class="range" min="0" max="255" step="1" value="0"> 17 <span id="value3" class="value">0</span> 18 19</body> 20 21</html>
Javascript
1(window.onload = function() { 2 'use strict'; 3 4 var range1 = document.getElementById('range1'); 5 var value1 = document.getElementById('value1'); 6 var rangeValue1 = function(){ 7 value1.innerHTML = range1.value; 8 }; 9 10 var range2 = document.getElementById('range2'); 11 var value2 = document.getElementById('value2'); 12 var rangeValue2 = function(){ 13 value2.innerHTML = range2.value; 14 }; 15 16 var range3 = document.getElementById('range3'); 17 var value3 = document.getElementById('value3'); 18 var rangeValue3 = function(){ 19 value3.innerHTML = range3.value; 20 }; 21 22 range1.addEventListener('input', rangeValue1); 23 range2.addEventListener('input', rangeValue2); 24 range3.addEventListener('input', rangeValue3); 25 26})();
試したこと
Javascript
1(window.onload = function() { 2 'use strict'; 3 4 var range = document.getElementsByClassName('range'); 5 6 range.addEventListener('input', function(){ 7 this.nextElementSibling.innerHTML = this.value; 8 }); 9 10})();
試したことを実行した結果、レンジの値が表示されませんでした。
開発ツールでは、Uncaught TypeError: range.addEventListener is not a functionと表示されます。
以上、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー