0

我正在创建一个网络应用程序来帮助像我这样的糖尿病患者。我在使用 javascript 时遇到问题,它会自动设置我的胰岛素与碳水化合物的比例 {myFunction()}。它只是不会出现。代码是...

<HTML>
<head>
    <meta name="viewport" content="initial-scale=2, user-scalable=no">
    <meta name= apple-mobile-web-app-capable content= yes />
    <meta name= apple-mobile-web-app-status-bar-style content= black />
    <link rel="apple-touch-icon" href="https://dl.dropboxusercontent.com/u/11681462/untitled%20folder/Icon/Icon-SD-Iphone.png" />
    <link rel="apple-touch-icon" sizes= 114x114 href="https://dl.dropboxusercontent.com/u/11681462/untitled%20folder/Icon/Icon-HD-Iphone.png" />
    <link rel="apple-touch-icon" sizes= 72x72 href="https://dl.dropboxusercontent.com/u/11681462/untitled%20folder/Icon/Icon-SD-Ipad.png" />
    <link rel="apple-touch-icon" sizes= 144x144 href="https://dl.dropboxusercontent.com/u/11681462/untitled%20folder/Icon/Icon-HD-Ipad.png" />
    <Title> Diabetes Cal </Title>
    <script>
        function valuechanged() {
    var a = document.getElementById('textA').value;
    var b = document.getElementById('textB').value;
    var t = document.getElementById('textX').value;
    var y = document.getElementById('textY').value;
    var z = document.getElementById('textZ').value;
    var dec = t * 0.1;
    var x = parseFloat(dec).toFixed(1);
    if (+x - +y < 0) {
        var c = 0;
    }
         else
        {
            c = +x - +y;
        } 
       if (c < 0) {
        var l = 0;
       }
        else
        {
        var l = c / z;
        }
        var d = parseFloat(l).toFixed(2);
        if (a / b < 0)
        {
        var u = 0;
        }
        else
        {
        var u = a / b;
        }
        var e = parseFloat(u).toFixed(2);
        document.getElementById('labelS').innerHTML = e;
        document.getElementById('labelG').innerHTML = d;
        document.getElementById('labelX').innerHTML = +x;
        document.getElementById('labelA').innerHTML = a;
        document.getElementById('labelJ').innerHTML = +d + +e;
            }
        function myFunction(){  
    var TS=document.getElementById('textB')
     var date= new Date();
     var time = date.getHours();
    if (time<10)
         {
          CR = "8";
          }
        else if (time<16)
         {
          CR = "10";
          }
        else if (time<20)
         {
          CR = "5";
          }
        else
         {
         CR = "8";
          }
    TS.value= CR
    }
        </script>
    </head>
    <body BGColor=orange onload="valuechanged();myFunction();" > <center><br> Bolus Wizard <br>
         <div>
            Bg (without Decimal)<br> 
        <input type="text" pattern=\d* id="textX" min="25" max="333" value="25" onchange="valuechanged();" /><br><label ID="labelX">-----</label> mmol/L<br>

        </div><hr width=45% color=black size=0.5>
        <div>
            Carbs<br> <input type="text" pattern=\d* ID="textA" max=300 value="0" onchange="valuechanged();" /><br>
        </div><hr width=45% color=black size=0.5>
        <div>
            Carb Ratio<br><input type="text" pattern=\d* ID="textB" value="" onchange="valuechanged();" /> 
        </div>
        <div>
            Target<br><input type="text" pattern=\d* ID="textY" value="6" onchange="valuechanged();" />
        </div>
    <div>
            Correction Factor<br><input type="text" pattern=\d* ID="textZ" value="2" onchange="valuechanged();" />
        </div>
    <div>
            Food<br>  <label ID="labelS">  ---</label> Units
        </div>
    <p>
    <div>
            Correction<br>  <label ID="labelG">  ---</label> Units
        </div>
    <p>
        <div>
            You Need...<br>  <label ID="labelJ">  ---</label> Units
        </div>
    <p>
    </center>
    </body>
</HTML> 

我希望有人可以调试我的问题。t 令人困惑。公式是 (Blood Sugar{x}-Target{y} -:- (Correction Factor{z})+ (carbs{a} -:- Carb ratio{b})在我添加小数位之前它正在工作

var dec = t * 0.1; var x = parseFloat(dec).toFixed(1);

如果有人能教我如何为

TextZ、TextY 和 TextB

不同页面上的区域会很棒。PM我(如果可以的话)

非常感谢

4

2 回答 2

1

我不知道计算是否正确,但您的代码包含一行:

document.getElementById('labelA').innerHTML = a;

问题是您的文档不包含 ID 为 labelA 的元素,因此 getElementById 返回null然后您尝试获取innerHTMLnull ,这会导致错误。

如果您注释掉该行,它似乎正在做某事。

一个提示:如果您使用的是 firefox、chrome 或 opera,您可以按 F12 并检查控制台是否有 javascript 错误。在您的代码中,您可以使用 console.log 从您的代码中记录,例如:

console.log("is variable a what I think it is:",a);
于 2013-06-26T01:07:56.993 回答
0

你需要改变这一行:

  document.getElementById('labelA').innerHTML = a;

对此:

  document.getElementById('textA').innerHTML = a;
于 2013-06-26T01:01:09.467 回答