我有一个输入元素,在其值属性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">
有什么不对?
答案 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;
}