使用eval(),用户在html页面上输入的等式求解方程

时间:2016-06-15 09:20:58

标签: javascript html

我想评估用户使用eval()输入的等式。阅读 输入我使用querySelector但它不起作用。

<html> 
<body>
<div class="row">
        <div class="col-lg-12">
            <input type="text" name="equation" id="equation" placeholder="enter equation eg: 2+4">
            <button type="button" id="button" onclick="evaluate()">Result</button><br>
            <div style="width:150px; height:50px; color:red; background-color:white;" id="result">
        </div>
    </div>
</body>

<script>
 function evaluate(){
var input = document.querySelector('#equation');
var inputVal = input.innerHTML;
var btnVal = this.innerHTML;
var r1 = eval(btnVal);
document.getElementById("result").innerHTML=r1;

}
</script>
</html>

3 个答案:

答案 0 :(得分:2)

注意eval()对任意(尚未验证)的用户输入进行安全是不安全的。

为了使您的解决方案有效,您可以尝试

替换

var inputVal = input.innerHTML;
var btnVal = this.innerHTML;

var btnVal = input.value; //input's value you need rather than its innerHTML

答案 1 :(得分:2)

  

evaluate()是与built-in javascript一起提供的document功能。

您需要change function name,因为当您点击按钮时,它会调用javscript evaluate功能,而不是function

function Evaluate() {
var input = document.getElementById('equation');
var inputVal = input.value;
var r1 = eval(inputVal);
document.getElementById("result").innerHTML = r1;
}

<button type="button" id="button" onclick="Evaluate()">Result</button><br>

答案 2 :(得分:0)

您可以尝试以下代码:

<html><body><div class="row">
    <div class="col-lg-12">
        <input type="text" name="equation" id="equation" placeholder="enter equation eg: 2+4">
        <button type="button" id="button" onclick="evaluar()">Result</button><br>
        <div style="width:150px; height:50px; color:red; background-color:white;" id="result">
    </div>
</div></body><script>function evaluar(){
var input = document.getElementById("equation");
var inputVal = input.value;
document.getElementById("result").innerHTML=eval(inputVal);}</script></html>