【问题标题】:how to make 6 range input in form如何在表单中进行 6 个范围输入
【发布时间】:2018-08-03 14:29:00
【问题描述】:

你好,我想启用 6 范围输入,但是当我这样做时 一个只工作,五个不工作 让我们试试

var slider = document.getElementById("myRange");

var output = document.getElementById("demo");

output.innerHTML = slider.value;

slider.oninput = function() {
  output.innerHTML = this.value;
}
                     	  <input name="act" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange">
  <p> Activities: <span id="demo"></span>%</p>




		                                    	  <input name="his" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="price">
  <p>History: <span id="result"></span>%</p>



		                                    	  <input name="nig" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange2">
  <p>Nightlife: <span id="demo2"></span>%</p>


	  <input name="beat" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange3">
  <p>Beaches: <span id="demo3"></span>%</p>
  
  
  	  <input name="natu" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange4">
  <p>Nature: <span id="demo4"></span>%</p>
  
  	  <input name="shop" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange5">
  <p>Shopping: <span id="demo5"></span>%</p>

我想让所有工作都使用值 现在我怎样才能让它用他的价值来处理每一个输入

【问题讨论】:

  • document.getElementById("myRange") 只获取对第一个滑块(id="myRange" 的那个)的引用。您必须对其他滑块执行相同的操作。 document.getElementById("myRange2")
  • 我做了但不工作你可以试试给我运行代码sn-p看看?

标签: javascript forms input range


【解决方案1】:

您只为其中一个输入添加了事件处理程序,因此其他输入将不起作用。您可以使用查询选择器获取所有输入(所有输入都有 slider 类,因此我们可以使用 document.querySelector('input.slider'))并使用 for 循环遍历它们并获取 span 以显示与nextElementSibling 的百分比。

                     	  <input name="act" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange">
  <p> Activities: <span id="demo" class="slider"></span>%</p>




		                                    	  <input name="his" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="price">
  <p>History: <span id="result" class="slider"></span>%</p>



		                                    	  <input name="nig" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange2">
  <p>Nightlife: <span id="demo2" class="slider"></span>%</p>


	  <input name="beat" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange3">
  <p>Beaches: <span id="demo3" class="slider"></span>%</p>
  
  
  	  <input name="natu" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange4">
  <p>Nature: <span id="demo4" class="slider"></span>%</p>
  
  	  <input name="shop" style="    width: 70%;
    float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange5">
  <p>Shopping: <span id="demo5" class="slider"></span>%</p>
  <script>
 var sliders = document.querySelectorAll("input.slider");



for(let i = 0; i < sliders.length; i++){
var slider = sliders[i];
slider.nextElementSibling.querySelector('span.slider').innerHTML = slider.value;

  slider.oninput = function() {
   this.nextElementSibling.querySelector('span.slider').innerHTML = this.value;
  }
}
  </script>

【讨论】:

    【解决方案2】:

    您必须为其他范围滑块实现句柄功能... 每个范围滑块必须有自己的“oninput”功能,例如对于滑块历史:

    var slider = document.getElementById("myRange");
    
    var output = document.getElementById("demo");
    
    output.innerHTML = slider.value;
    
    slider.oninput = function() {
      output.innerHTML = this.value;
    }
    
    // You miss implementing the code for the 5 other ranges
    // You must implement the "oninput" for each range slider
    var slider2 = document.getElementById("price");
    
    var output2 = document.getElementById("result");
    
    output2.innerHTML = slider2.value;
    
    slider2.oninput = function() {
      output2.innerHTML = this.value;
    }
                         	  <input name="act" style="    width: 70%;
        float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange">
      <p> Activities: <span id="demo"></span>%</p>
    
    
    
    
    		                                    	  <input name="his" style="    width: 70%;
        float: right;" type="range" min="0" max="100" value="0" class="slider" id="price">
      <p>History: <span id="result"></span>%</p>
    
    
    
    		                                    	  <input name="nig" style="    width: 70%;
        float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange2">
      <p>Nightlife: <span id="demo2"></span>%</p>
    
    
    	  <input name="beat" style="    width: 70%;
        float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange3">
      <p>Beaches: <span id="demo3"></span>%</p>
      
      
      	  <input name="natu" style="    width: 70%;
        float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange4">
      <p>Nature: <span id="demo4"></span>%</p>
      
      	  <input name="shop" style="    width: 70%;
        float: right;" type="range" min="0" max="100" value="0" class="slider" id="myRange5">
      <p>Shopping: <span id="demo5"></span>%</p>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      相关资源
      最近更新 更多