我想评估用户使用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>
答案 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>