【问题标题】:My mini calculator isn't working. Please read description我的迷你计算器不工作。请阅读说明
【发布时间】:2020-10-27 13:53:19
【问题描述】:

我正在尝试用 javascript 制作一个计算器,但它不工作。当我尝试这样做时,比如说 1 + 1,它给了我 11,这对于所有数字都是一样的,这是我的代码:

var slider1 = document.getElementById("myRange1");
var slider2 = document.getElementById("myRange2");
var output = document.getElementById("output");
var fullEquat = document.getElementById("equation");
var add1 = slider1.value;
var add2 = slider2.value;

output.innerHTML = slider1.value; // Display the default slider value

// Update the current slider value (each time you drag the slider handle)
slider1.oninput = function() {
  output.innerHTML = this.value;
}
slider2.oninput = function() {
    add1 = slider1.value;
    add2 = slider2.value;
    equals = add1 + add2;
  fullEquat.innerHTML = slider1.value + "+" + slider2.value + "=" + equals;
}
slider1.oninput = function() {
    add1 = slider1.value;
    add2 = slider2.value;
    equals = add1 + add2;
  fullEquat.innerHTML = slider1.value + "+" + slider2.value + "=" + equals;
}
.slider {
    width: 400px;
    display: inline;
}
.equal {
    text-align: center;
    font-size: 100pt;
    margin: 0 0 0 0;
}
<div class="slidecontainer">
  <input type="range" min="0" max="1000" value="500" class="slider" id="myRange1">
    +
  <input type="range" min="0" max="1000" value="500" class="slider" id="myRange2">
</div>
<p class="equal">=</p>
<p id="output" class="output"></p>
<p id="equation" class="equat"> + = </p>

【问题讨论】:

  • 尝试add1 = +slider1.value;add1 = parseFloat(slider1.value); - 与您获得的所有其他值相同,因为除非您将它们设为数字,否则它们将是字符串... "1" + "1" === "11" 在javascript中
  • .value 属性始终是字符串,而不是数字。您可以使用Number() 将值转换为数字,或者简单地使用+ 前缀运算符。
  • @Pointy 我如何使用 Number() 我是 javascript 的超级菜鸟
  • 你可以这样做equals = +add1 + +add2;
  • @firatozcevahir 更短,谢谢!

标签: javascript html math addition


【解决方案1】:

当您声明 add1 = slider1.value; add2 = slider2.value; 时,您得到的是一个字符串而不是一个数字...您应该像这样将它们放在 Number() 中

add1 = Number(slider1.value);
add2 = Number(slider2.value);

【讨论】:

    【解决方案2】:

    Value 属性返回一个字符串,你可以使用一个简单的技巧将它与 1 相乘,例如 add1 = slider。 value * 1. 它会给你一个数字

    【讨论】:

      【解决方案3】:

      .value 属性返回一个字符串
      您必须使用.valueAsNumber 来获取号码

      示例代码:

      const calcForm = document.forms['form-calculation']
        ,  pOutput   = document.getElementById('p-output')
        ;
      calcForm.oninput=_=>
        {
        calcForm['range-1'].nextElementSibling.textContent = calcForm['range-1'].value
        calcForm['range-2'].nextElementSibling.textContent = calcForm['range-2'].value
      
        pOutput.textContent = calcForm['range-1'].valueAsNumber 
                            + calcForm['range-2'].valueAsNumber
        }
      form { width: 20em; }
      input[type="range"] {width: 80%;  }
      label { font-size:2em; font-weight: bold;  text-align: center; display: block; width: 80%;}
      <form name="form-calculation">
        <input type="range" min="0" max="1000" value="500"   name="range-1"><span>500</span> 
        <label>+</label>
        <input type="range" min="0" max="1000" value="500" name="range-2"><span>500</span>
        <label>=</label>
      </form>
        <p id="p-output" class="output">1000</p>

      【讨论】:

      • 这是一个很好的编码工作,但是我不知道大多数关键字是什么意思。我想尝试坚持我知道的东西。感谢您的尝试!
      • @hacker19374 一切都在 msn 上,例如:developer.mozilla.org/en-US/docs/Web/API/…
      猜你喜欢
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多