简体   繁体   English

JavaScript:更新两个范围值之和的值

[英]JavaScript: Update a value that is the sum of two range values

I recently started to work on Django and JavaScript, and currently working on Range items.我最近开始研究 Django 和 JavaScript,目前正在研究范围项目。 I successfully managed to have two functioning scales and to update their value next to them each time the user is modifying them.我成功地拥有了两个正常工作的量表,并在每次用户修改它们时更新它们旁边的值。

<p>You are spending<span id="demo1"></span> dollars on this item.</p>
<div class="input-group">
    <p class="input-group-text">0<input type="range" id="myRange1" name="myRange" min="0" max = "120" step="5" class="form-range"></p>
    <p class="input-group-text"> 120</p>
</div>

var slider1 = document.getElementById("myRange1");
var output1 = document.getElementById("demo1");
output1.innerHTML = slider1.value; 
slider1.oninput = function() {
  output1.innerHTML = this.value;
}

<p>You are spending<span id="demo2"></span> dollars on this item.</p>
    <div class="input-group">
        <p class="input-group-text">0<input type="range" id="myRange2" name="myRange" min="0" max = "120" step="5" class="form-range"></p>
        <p class="input-group-text"> 120</p>
    </div>

    var slider2 = document.getElementById("myRange2");
    var output2 = document.getElementById("demo2");
    output2.innerHTML = slider2.value; 
    slider2.oninput = function() {
      output2.innerHTML = this.value;
    }

Now, what I am trying to get is to have a value that is the sum of the two values, and that is updating as soon as the user is modifying one of the two scales.现在,我想要得到的是一个值,它是两个值的总和,并且一旦用户修改两个比例之一,它就会更新。 I tried the following:我尝试了以下方法:

<p>You have spent <span id="demo_total"></span> dollars in total.</p>

var value_total = 0
var output_total = document.getElementById("demo_total");
output_total.innerHTML = 120 // Display the default slider value
value_total.value = function() {
  output_total.innerHTML = parseInt(output1.innerHTML) + parseInt(output2.innerHTML);
}

But without success.但没有成功。 Could you help me to achieve this?你能帮我实现这一目标吗? Thank you in advance.先感谢您。

Checking the code I see that you are not adding your listeners correctly, you need to fix that first.检查代码我发现您没有正确添加侦听器,您需要先修复它。 After having listeners working correctly on each slider input event, you could be computing the total and assigning it to the innerHTML as you are doing it right now.在让监听器在每个 slider 输入事件上正常工作后,您可以像现在一样计算总数并将其分配给 innerHTML。

For the listeners check this: W3Schools JS DOM listeners对于侦听器,请检查: W3Schools JS DOM listeners

The below code is working as per your requirement.下面的代码根据您的要求工作。

<p>You are spending<span id="demo1"></span> dollars on this item.</p>
<div class="input-group">
    <p class="input-group-text">0<input type="range" id="myRange1" name="myRange" min="0" max = "120" step="5" class="form-range"></p>
    <p class="input-group-text"> 120</p>
</div>

<p>You are spending<span id="demo2"></span> dollars on this item.</p>
    <div class="input-group">
        <p class="input-group-text">0<input type="range" id="myRange2" name="myRange" min="0" max = "120" step="5" class="form-range"></p>
        <p class="input-group-text"> 120</p>
    </div>

    <p>You have spent <span id="demo_total"></span> dollars in total.</p>
<script type="text/javascript">
    var slider1 = document.getElementById("myRange1");
    var output1 = document.getElementById("demo1");
    var output_total = document.getElementById("demo_total");
    var slider2 = document.getElementById("myRange2");
    var output2 = document.getElementById("demo2");

    var value_total = 0
    output1.innerHTML = slider1.value; 
    slider1.oninput = function() {
      output1.innerHTML = this.value;
      output_total.innerHTML = +this.value + +output2.innerHTML //on update of slider 1
    }
    output2.innerHTML = slider2.value; 
    output_total.innerHTML = 120;
    slider2.oninput = function() {
      output2.innerHTML = this.value;
      output_total.innerHTML = +this.value + +output1.innerHTML //on update of slider 2
    }
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM