首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将变量从javascript传输到math.js (getElementById())

将变量从javascript传输到math.js (getElementById())
EN

Stack Overflow用户
提问于 2019-09-24 12:18:05
回答 1查看 110关注 0票数 2

我正在尝试将javascript变量传输到math.js函数。变量(denexp)由getElementById获得,如下所示:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">

  <script src="https://unpkg.com/mathjs@6.2.2/dist/math.min.js"></script>

  <style>
    body {
      font-family: sans-serif;
    }
  </style>
</head>
<body>

  <canvas id=canvas1 width=1600 height=400></canvas>
  <canvas id=canvas2 width=800 height=400></canvas>

<table>
  <tr>
    <th>den</th>
    <th><input type="number" id="denid" value="1.0" min="0">&nbsp;</th>
  </tr>
</table>

  <script>

    const sim = math.parser()
    const denexp = document.getElementById("denid").value;
    sim.evaluate("G = denexp")  // Density

  </script>
</body>
</html>

然而,math.js似乎不能读denexp

我得到以下错误:

未明错误:未定义符号denexp

你有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-24 12:39:46

在传递给"G = denexp"的字符串( evaluate )中,Math.js只希望找到数字、单位和数学符号之类的东西:0.5sinsqrtdeg等。您试图通过简单地将变量denexp包含在字符串中来传递变量denexp,但是"denexp"并不是Math.js理解的符号。相反,您必须将denexp的值追加到字符串中:

代码语言:javascript
复制
sim.evaluate("G = " + denexp)

或者,如果您的浏览器目标支持模板文字:

代码语言:javascript
复制
sim.evaluate(`G = ${denexp}`)

或者,您可以为Math.js提供一个作用域,允许您使用表达式中在作用域中定义的任何变量:

代码语言:javascript
复制
var scope = {
  denexp: denexp
}
sim.evaluate("G = denexp", scope)

这样做的好处是,任何变量赋值(如此处的G = )也将保存到作用域中(尽管简单地将一个变量分配给另一个变量(就像在您的示例中所做的那样)并不非常有用,而且可能不是您的目标)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58080175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档