javascript - eval(document.getElementById ("userinput").value) 不起作用

标签 javascript html input eval

我有一个输入元素,在其值属性(即“3+5-6*8”)中保存字符串形式的数学表达式(即“3+5-6*8”)

我想评估该值,然后将其设置为输入元素的新值。

这是我的 JS 函数:

    function evaluate() {
            document.getElementById("userinput").value=eval(document.getElementById("userinput").value);
        }

由于某种原因,这没有任何作用

据我所知,eval() 仅在参数为字符串时才有效;否则它将返回参数不变。

根据我制作输入标签的方式,输入元素的value属性的数据类型应该是字符串:

    <input type="text" id="userinput" readonly="true">

出了什么问题?

最佳答案

您是否收到错误:Uncaught NotSupportedError:无法在“文档”上执行“评估”:提供的上下文节点为空。

问题是 evaluate 是一种不应被覆盖的关键字:https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript

所以我将该函数重命名为 foo,它起作用了:http://jsfiddle.net/28sXE/1/

html:

<input type="text" id="userinput" />
<button onClick="foo()">do it</button>

js:

function foo() {
    var val = document.getElementById("userinput").value;
    var out = eval(val);
    document.getElementById("userinput").value = out;
}

关于javascript - eval(document.getElementById ("userinput").value) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23620286/

相关文章:

html - 如何在使用 &lt;input name ="photo"type ="file"/> 上传文件后立即显示照片?

javascript - 在 Chrome 中上传文件时点击 'Cancel' 清除值

javascript - Jsreport从客户端和服务器渲染时显示不同的结果

javascript - 根据当前时间选择最近的日期

javascript - 当我们想要订阅可观察数组时如何进行错误处理

Javascript:将 HTML 上传到 S3

JavaScript - 使用 AppendChild() 将新行添加到表中

javascript - 使用 JQUERY 选择的 cb 列表的复选框过滤

javascript - 拖动 div 时的 onMouseOver 事件

javascript - 使 body 最小化以适应特殊的显示器尺寸