gpt4 book ai didi

javascript - 如何检查评估名称是否未定义

转载 作者:太空狗 更新时间:2023-10-29 14:10:08 26 4
gpt4 key购买 nike

我有一个基本上是计算器的表格。你可以输入一个方程式,它会计算它。我还有 2 个内存字段(名为 m1 和 m2 的文本框),您可以在其中输入内容,它将保存该值,然后当您在第一个框中输入表达式时,您可以在方程式中引用 m1 或 m2,它将使用您在内存字段中输入的数字进行评估。

问题是,如果您尝试在方程中引用 m1 或 m2,而文本框为空白,则会出现未定义的错误。

我已经转了几个小时来尝试进行某种检查,如果方程式被评估为未定义,则只显示一个弹出框。我在原始 javascript 中需要这个。任何帮助表示赞赏。

function displayResult(thisElement)
{
thisElement.value = eval(thisElement.value); <!-- this line throws the error if you use m1 and no m1 is defined, m2 and no m2 is defined, etc -->
if(!(thisElement.value>0))
{
thisElement.value=0;
}
}

function mem(v)
{
v.value = eval(v.value);
eval(v.name+"="+v.value);
}

<input id="calcFormula" name="calculate" size="40" />
<input type="submit" value="Calculate" onclick="displayResult(this.form.calculate);" />

<input name="m1" id="m1" size="12" onchange="mem(this);" value="0" />
<input name="m2" id="m2" size="12" onchange="mem(this);" value="0" />

最佳答案

我可以想到三种解决方案:

  1. 您可以假设空 m1/m2 表示 0,因此永远不会有未定义的值。这确实简化了事情。
  2. 您可以使用正则表达式首先检查等式中是否出现任何 m1 或 m2,如果存在,然后检查是否未定义。
  3. 但最好的方法是使用try...catch .

尝试/捕捉示例:

try {
eval('12+3+m1');
} catch (e) {
alert(e.message);
}

关于javascript - 如何检查评估名称是否未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com