我正在创建一个将不同的阿片类药物转换为标准阿片类药物剂量的计算器。计算器可以很好地转换所有药物,但是单击按钮时,我无法使用javaScript sum()函数将所有药物相加。请帮忙。
值得注意的是,“ totalMED + = total [i])。value;” for循环内的代码破坏了药物计算功能(不显示任何值)。我不知道为什么。
P.S。我意识到两个calculate()函数基本上是相同的,但是我无法获得相关的值以循环通过单个函数。我似乎在循环方面遇到问题。
<v-flex text-xs-center>
<v-btn>Action</vbtn>
</v-flex>
JavaScript函数
Updated code with comments:
<!DOCTYPE html>
<html>
<head>
<SCRIPT language="javascript" src="date.js"></SCRIPT>
<style type="text/css">
...
</style>
</head>
<body>
<form>
<table>
<tr>
<th>Medications</th>
<th>Daily Dose (mg)</th>
<th>MED</th>
<th>Medications</th>
<th>Daily Dose (mg)</th>
<th>MED</th>
</tr>
<tr>
// ---this input box is really just a label----
<td><input class="tg-yw41" type=”text” name=”Tramadol” value=Tramadol id="med”
disabled></td>
// ----This input box takes user entered dosage, calls calculate() function, and
// passes the conversion factor---
<td>'TEXT"</td><td><input class ="tg-yw41" type=”text” name=”dose” value=""
placeholder="0" Id="r18c2" onchange="calculate28('.1')"></td>
//---This input box receives the value from the calculate function via Id="MED-
// Tramadol". Also includes name="sum" for sum() function.
<td><input Id="MED-Tramadol" type=”text” name="sum" value="" disabled></td>
//----The next three rows are just duplicate of above
<td><input class="tg-yw41" type=”text” name=”Sufentanil” value="Sufentanil"
disabled></td>
<td><input class ="tg-yw41" type=”text” name=”dose” value="" placeholder="0"
Id="r18c5" onchange="calculate29('60')"></td>
<td><input Id="MED-Sufentanil-intra" type=”text” name="sum" value="" disabled></td>
</tr>
<tr>
//-----Label
<td><input value="Total Daily Morphine Equivalent Dose (MED) in Milligrams"
disabled></td>
//---Input box that should receive value from sum() function (via ID="r19c2")
<td><input class ="tg-yw41" type=”text” name=”dose” value="" placeholder="0"
Id="r19c2"></td>
</tr>
//A button that when clicked calls the sum() function
</table>
<button type="button" onclick="sum()">MED total</button>
答案 0 :(得分:1)
拉动输入框的值时,它会被读为字符串。使用parseInt()
获取数字,否则将串联字符串。
由于要接受用户输入,因此您还应该对其进行验证。确保没有NaN的一种简单方法是将值拉入一个临时变量,然后在解析前对其进行测试。
var strTemp = total[i].value;
if (strTemp)
{
totalMED += parseInt(test);
}
编辑:我忽略了括号,认为这只是问题中的错字。我决定不应该。如果您检查浏览器的JS控制台,则会在呼叫中轻松看到一些小错误,例如无法匹配的)
,因为这肯定会暂停程序并提供错误消息。
答案 1 :(得分:1)
我将在此处发布此答案,如果它没有帮助或已接近,我们可以根据需要进行编辑。
首先,您确定在每个变量中都收到正确的值吗?例如,var total = document.getElementsByName('sum').value;
应该返回为undefined
。
第二,totalMED += total[i]).value;
不是有效的Javascript,即使var total = document.getElementsByName('sum').value;
可以为您提供一系列实际值,也可以使用totalMED += total[i]).value;
来连接字符串。例如,如果您的页面上有2个input
元素,并且第一个元素的值为20
,第二个元素的值为25
,那么您的输出将为{{1 }},因为02025
的类型为value
。
我认为这可能会有所帮助:
JavaScript
string
这里是JSFiddle,以证明其正常工作。
让我知道这是否有帮助。