两个输入值的加法和乘法不起作用

时间:2017-11-05 17:42:53

标签: javascript html

我试图使用onclick()创建一个简单的getElementById函数来从输入组中获取值,但我的局部变量之一似乎不能在另一个局部变量中起作用。< / p>

    function hRadOpRec() {
    var hgt = document.getElementById("oRecHgt").value;
    var bot = document.getElementById("oRecBot").value;
    var wPer = ((2 * hgt) + bot);
    var cSec = (hgt * bot);
    var hRad = (cSec / wPer);
    return document.getElementById("hRORec").value = hRad;
    }

 <div class="col-md-3 collapse" id="hRadOpRec">
  <h4>Açık Dikdörtgen Kanal Hidrolik Yarıçap</h4>
  <div class="input-group">
    <span class="input-group-addon" id="basic-addon1">Sıvı Yüksekliği (m)</span>
    <input type="text" class="form-control" aria-describedby="basic-addon1" id="oRecHgt">
  </div>
  <div class="input-group">
    <span class="input-group-addon" id="basic-addon1">Taban Genişliği (m)</span>
    <input type="text" class="form-control" aria-describedby="basic-addon1" id="oRecBot">
  </div>
  <button type="button" class="btn" onclick="hRadOpRec()">Hesapla</button>
  <div class="input-group">
    <span class="input-group-addon" id="basic-addon1">Hidrolik Yarıçap (m)</span>
    <input type="text" class="form-control" aria-describedby="basic-addon1" readonly id="hRORec">
  </div> 
 </div>

我已经尝试过调试它,而变量bot放入wPer变量时似乎只是弄乱了一切。当我从wPer删除机器人时,它可以正常工作。将bot放在其他变量中也不会导致任何问题。例如,当hgtbot为10时,函数应返回100/30,而是返回0.04975124378109453。当我从bot中删除wPer时,对于相同的值,函数会返回100/20

1 个答案:

答案 0 :(得分:1)

缺少的是parseInt()功能

由于hgtbot是字符串,因此当您计算wPercSec时,也会发生连接。假设用户分别在1010中输入第一个和第二个输入。

  • wPer:((2 * hgt) + bot) = ((2*"10")+"20") = 20 + "20" = 2020。时间运算符*将执行乘法,即使它是两个操作数字符串,因为它们将被解析,而+运算符将在其中一个操作数是字符串时执行连接。
  • cSec:(hgt * bot) = ("10"*"10") = 100,一个正常的乘法,但两个操作数都是字符串
  • 100/1020将是您函数的输出。

以下是您要执行的操作,使用parseInt()

&#13;
&#13;
function hRadOpRec() {
    var hgt = parseInt(document.getElementById("oRecHgt").value);
    var bot = parseInt(document.getElementById("oRecBot").value);
    var wPer = ((2 * hgt) + bot);
    var cSec = (hgt * bot);
    var hRad = (cSec / wPer);
    return document.getElementById("hRORec").value= hRad;
    }
&#13;
 <div class="col-md-3 collapse" id="hRadOpRec">
  <h4>Açık Dikdörtgen Kanal Hidrolik Yarıçap</h4>
  <div class="input-group">
    <span class="input-group-addon" id="basic-addon1">Sıvı Yüksekliği (m)</span>
    <input type="text" class="form-control" aria-describedby="basic-addon1" id="oRecHgt">
  </div>
  <div class="input-group">
    <span class="input-group-addon" id="basic-addon1">Taban Genişliği (m)</span>
    <input type="text" class="form-control" aria-describedby="basic-addon1" id="oRecBot">
  </div>
  <button type="button" class="btn" onclick="hRadOpRec()">Hesapla</button>
  <div class="input-group">
    <span class="input-group-addon" id="basic-addon1">Hidrolik Yarıçap (m)</span>
    <input type="text" class="form-control" aria-describedby="basic-addon1" readonly id="hRORec">
  </div> 
 </div>
&#13;
&#13;
&#13;