eval(document.getElementById(“userinput”)。value)无法正常工作

时间:2014-05-12 22:59:14

标签: javascript html5 input eval

我有一个输入元素,在其值属性mathematical expression中以字符串形式保存(i.e "3+5-6*8")

我想评估此值,然后将其设置为input元素的新值。

这是我的JS功能:

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

由于某种原因,这没有做任何事情

据我所知,eval()仅在参数为字符串时才有效;否则它会使参数保持不变。

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

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

有什么不对?

1 个答案:

答案 0 :(得分:2)

您收到错误:Uncaught NotSupportedError: Failed to execute 'evaluate' on 'Document': The context node provided is null.

问题是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;
}