javascript - 如何使用 keyup 事件创建复杂的公式

标签 javascript jquery html math

我对编码还是新手。我必须让这个公式发挥作用。

GPro = 31 * ((Cr/8.4)-1.5) * (kA-0.2) * kG

它是一个在线计算器,必须在用户输入(keyup 事件)后自动运行。 该网站上有三个公式 - CrumPro、CrumPo 和 Gpro(请参阅下面的代码)。前两个工作得很好。然而,一旦我在脚本中添加第三个(GPro),其他两个就崩溃并停止工作。我做错了什么,但我不明白是什么。也许我使用了错误的 Math.pow 函数...我需要专家建议...或者可能是更好的代码。正如我所说 - 只要第三个公式不在脚本中,前两个公式就可以正常工作。

提前致谢

代码如下:

// Get CrumPro
    function getCrPro() {
      var CrmgPro= parseFloat($('#demo3').val());
      var CrumPro = CrmgPro / 0.05;
      var CrPro = CrumPro.toFixed(2);
      if (isNaN(CrPro)) CrPro = 0;
  
      $('#demo5').val((CrPro));
    }

    $(document).ready(function() {
      $('#demo3').keyup(function(event) {
        getCrPro();
      });
    });

    // Get CrumPo
    function getCrPo() {
      var CrmgPo = parseFloat($("#res1").val());
      var CrumPo = CrmgPo / 0.05;
      var CrPo = CrumPo.toFixed(2);
      if (isNaN(CrPo)) CrPo = 0;
 
      $('#res2').val((CrPo));
    }

    $(document).ready(function() {
      $('#res1').keyup(function(event) {
        getCrPo();
      });
    });

    //get GPro
    function getGPro () {
      var Cr = parseFloat($("#demo3").val());
      var Cru = Cr / 0.05;
      var Cru2 = Cru.toFixed(2);
      var Cr8 = Cru2 / 8.4;
      var kCr = Math.pow (Cr8, -1,5);

      var kA = parseFloat($("#demo1").val());
      var kAP = Math.pow (kA, -0,2);

      var kG = parseFloat($("#demo4").val());
 
      var G = (31 * kCr * kAP * kG);

      if (isNaN(G)) G = 0;

      $('#demo6').val((G));
    }

    $(document).ready(function() {
      $('#demo3').keyup(function(event) {
        getGPro();
      });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="demo1" type=“number” name="age" placeholder="age">
    <label for="demo1">kA (age)</label>
    <br />
    <input id="demo2a" class="gender" type="radio" name="gender" value="0,742" onClick="document.getElementById('demo4').value=this.value">
    <label for="demo2a">female</label>
    <input type="radio" name="gender" id="demo2b" class="gender" value="1" onClick="document.getElementById('demo4').value=this.value">
    <label for="demo2b">male</label>
    <br />
    <input id="demo4" type="text" name="kG" placeholder="kG" readonly="true" value="0">
    <label for="demo4">kG</label>
    <br />
    <input id="demo3" type="number" name="Cr" placeholder="CrPro">
    <label for="demo3">CrPro</label>
    <br />
    <input id="demo5" type="text" name="CrumPro" readonly="true" placeholder="=CrPro/0,01131222" value="0">
    <label for="demo5"> CrumPro </label> 
    <br />
    <input id="demo6" type="text" name="GPro" readonly="true" placeholder=" GPro = 31 * ((Cr / 8.4)^-1.5) * (kA^-0.2) * kG)">
    <label for="demo6"> GPro </label>
    <br />
    <input id="res1" type="number" name="CrPo" placeholder="Crea (mg/dL)">
    <label for="res1"> CrPo </label>
    <br />
    <input id="res2" type="text" name="CrumPo" readonly="true" value="0" placeholder="= CrPo/0.01131222">
    <label for="res2">CrumPo</label>
    <br />
    <input id="res3" type="text" name="GPo" readonly="true" placeholder="GPo = 31 * ((Cr / 8.4)^-1.5) * (kA^-0.2) * kG)">
    <label for="res3">GPo</label>

最佳答案

只是一个错字;您在 getGPro 代码中错过了分号:

var G = (31 * kCr * kAP * kG)

必须是:

var G = (31 * kCr * kAP * kG);

更新: getGPro 函数定义也有一个拼写错误。 函数必须为小写:

function getGPro ()  

关于javascript - 如何使用 keyup 事件创建复杂的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46964313/

相关文章:

jquery - Fancybox 2.1.5 如何用自定义按钮替换默认控件?

javascript - 当我将它作为参数传递时,为什么 JavaScript 函数会自动转换二进制数?

Javascript 根据下拉菜单显示/隐藏

javascript - Angularjs 'Access-Control-Allow-Origin' 多个子域请求

javascript - 用于用户登录/注册的 Django 模式 - 表单渲染问题

javascript - 显示边框的 JQuery 生日选择器

javascript - If/else 语句检查不透明度,并添加类但不删除类

javascript - 单击时更改按钮的显示图像

javascript - Apache Cordova 无法加载插件

HTML 行与圆圈重叠