用Javascript表示/求解公式
我试图创建一个相当简单的表单,允许输入变量并求解给定的公式。我在如何表达公式以及如何将前两个变量理解为指数方面遇到了困难 以下是使用Excel单元格标签替换为html输入名称的完整公式:用Javascript表示/求解公式,javascript,html,formulas,Javascript,Html,Formulas,我试图创建一个相当简单的表单,允许输入变量并求解给定的公式。我在如何表达公式以及如何将前两个变量理解为指数方面遇到了困难 以下是使用Excel单元格标签替换为html输入名称的完整公式: =varNk * varQr * ( 273 + varT ) / ( 273 + varTo ) * varPp / varP * varKq * varKak 请注意,varNk和varQr是用指数输入的值,即97.53^12 编辑:实际公式链接到图像,因为我没有足够的代表直接发布- 以下是我试图使之发挥
=varNk * varQr * ( 273 + varT ) / ( 273 + varTo ) * varPp / varP * varKq * varKak
请注意,varNk和varQr是用指数输入的值,即97.53^12
编辑:实际公式链接到图像,因为我没有足够的代表直接发布-
以下是我试图使之发挥作用的内容。我不确定组装最终输出的正确方法,但理想情况下,我想找出如何使其成为一个单键操作
<head>
<script>
function doCalcOne()
{
var varNk = document.getElementById('varNk').value;
var varQr = document.getElementById('varQr').value;
var varT = document.getElementById('varT').value;
var varTo = document.getElementById('varTo').value;
var varPo = document.getElementById('varPo').value;
var varP = document.getElementById('varP').value;
var varKq = document.getElementById('varKq').value;
var varKak = document.getElementById('varKak').value;
var result1 = document.getElementById('stepOne');
var stepOne = varNk * varQr;
result1.value = stepOne;
}
function doCalcTwo()
{
var result2 = document.getElementById('stepTwo');
var stepTwo = parseInt(varT.value) + 273;
result2.value = stepTwo;
}
</script>
</head>
<html>
<table>
<tr>
<td>Step One:<input id="stepOne" /></td>
</tr>
<tr>
<td>Step Two:<input id="stepTwo" /></td>
</tr>
</table>
<div id="DoseRateCalc">
<p>Enter the values below to calculate the Dose Rate</p>
</div>
<table style="width:600px;border:1px solid #000;">
<tr>
<td>
<p>Nk=<input id="varNk" type="text"></p>
</td>
<td>
<p>TN 34013 IC Cal Certificate Detection Calibration Factor</p>
</td>
<tr>
<td>
<p>Qr=<input id="varQr" type="text"></p>
</td>
<td>
<p>Unidos measured charge in pC (pico coulumb)@20mm</p>
</td>
</tr>
<tr>
<td>
<p>T=<input id="varT" type="text"></p>
</td>
<td>
<P>Current temperature</p>
</td>
</tr>
<tr>
<td>
<p>To=<input id="varTo" type="text"></p>
</td>
<td>
<p>TN34013 IC cal certificate protocol temp</p>
</td>
</tr>
<tr>
<td>
<p>Po=<input id="varPo" type="text"></p>
</td>
<td>
<p>Current pressure</p>
</td>
</tr>
<tr>
<td>
<p>P=<input id="varP" type="text"></p>
</td>
<td>
<p>TN34013 IC cal certificate protocol pressure</p>
</td>
</tr>
<tr>
<td>
<p>Kq=<input id="varKq" type="text"></p>
</td>
<td>
<p>TN34013 IC cal certificate protocol TW30 Beam Quality Correction value</p>
</td>
</tr>
<tr>
<td>
<p>Kak->DW=<input id="varKak" type="text">
</td>
<td>
<p>Correction factor TN 34013 IC from PTW. Air Kerma --> absorbed dose to water convertion for TW30 Water Phantom Manual pg43</p>
</td>
</tr>
</p>
<p><input type="button" value="Calculate Step 1" onClick="doCalcOne()"></p>
<p><input type="button" value="Calculate Step 2" onClick="doCalcTwo()"></p>
</table>
<br>
</html>
调用doCalcOne末尾的doCalcTwo函数,传递您需要的任何变量,您应该会得到您期望的结果!你也可以用核弹第二个按钮。以下是更新的代码:
更新:我做了一个函数,添加了我认为正确的数学。我不知道你们到底想计算什么,但Excel风格的数学几乎可以一对一地转化为JavaScript。行动的顺序由你决定
function doCalcOne()
{
var varNk = document.getElementById('varNk').value;
var varQr = document.getElementById('varQr').value;
var varT = document.getElementById('varT').value;
var varTo = document.getElementById('varTo').value;
var varPo = document.getElementById('varPo').value;
var varP = document.getElementById('varP').value;
var varKq = document.getElementById('varKq').value;
var varKak = document.getElementById('varKak').value;
var result1 = document.getElementById('stepOne');
var stepOne = varNk * varQr * ( 273 + varT ) / ( 273 + varTo ) * varPp / varP * varKq * varKak;
result1.value = stepOne;
}
老实说,这里不需要两个函数,但我认为你有理由这样分解它。只需知道,您完全可以将这些功能合并为一个功能,它应该可以工作
我想指出的另一点是,您在一个函数中创建的变量对于不同的函数是不可用的。这被称为作用域,通过查看打开/关闭的花括号{和}可以很容易地确定。格式不良的代码使跟踪变得更加困难 哇,我真的很感谢你的快速反应和时间来整理这混乱!对于如何在一个函数下创建这一切,我仍然有点迷茫?我的最终值需要表示“=varNk*varQr*273+varT/273+varTo*varPp/varP*varKq*varKak”,如何使前两个变量接受23^12的格式纯粹是一个示例。很抱歉,我没有马上理解这一点。没问题,要在JavaScript中使用指数,您需要使用函数。如果你需要将基数和指数作为变量,你要么解析文本23^12困难,但不是很难,要么只提供两个输入框,一个用于基数,一个用于指数。另外,我认为最初的数学是错误的,这是你的问题!我会更新我的答案!啊,我想我开始明白了!另外,需要用指数输入的两个数字,指数是常数。Nk=x^9或x*10[9]和Qr=y^-12或y*10[-12]。我试着把它写成:var a=Math.powvarNk,9;var b=数学功率Varqr,-12;然后将公式更改为-a*b*273+varT/273+varTo*varPo/varP*varKq*varKak;多亏了你的指导,我才得以工作。我成功地计算了每个变量的指数,并将输出限制在小数点后4位。数学是正确的,现在我可以用它作为我计算的其余步骤的指南。再次感谢!!!!
function doCalcOne()
{
var varNk = document.getElementById('varNk').value;
var varQr = document.getElementById('varQr').value;
var varT = document.getElementById('varT').value;
var varTo = document.getElementById('varTo').value;
var varPo = document.getElementById('varPo').value;
var varP = document.getElementById('varP').value;
var varKq = document.getElementById('varKq').value;
var varKak = document.getElementById('varKak').value;
var result1 = document.getElementById('stepOne');
var stepOne = varNk * varQr * ( 273 + varT ) / ( 273 + varTo ) * varPp / varP * varKq * varKak;
result1.value = stepOne;
}