html - 未以所需方式显示的答案
问题描述
当我单击计算按钮时,它没有显示所需的结果,它在 btnvalue 输入中显示与以前相同,如果以前 btnvalue 为 2+3,则在单击计算按钮 2+3 后显示相同,但我希望显示为 5。
我已经尝试了所有函数 valueOf 等,但我没有得到结果,我在 subline text3 中编写我的代码并在 XAMPP 控制面板 v3.2.2 中执行它
<!DOCTYPE html>
<html>
<head>
<title>calculater</title>
<script
src="https://code.jquery.com/jquery-3.3.1.js"
integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
crossorigin="anonymous"></script>
</head>
<body>
<div style="padding-left:40px">
<h2> PHP Calculator</h2>
<form method="post" id="formID">
Enter value: <input type="text" name="btnValue" id='btnValue'> <br> <br>
<div style="padding-left: 105px">
<input type="button" value="9" name="btn1">
<input type="button" value="8" name="btn2">
<input type="button" value="7" name="btn3">
<input type="button" value="+" name="btn4"> <br>
<input type="button" value="6" name="btn5">
<input type="button" value="5" name="btn6">
<input type="button" value="4" name="btn7">
<input type="button" value="-" name="btn8" style="padding-left: 9px"> <br>
<input type="button" value="3" name="btn8">
<input type="button" value="2" name="btn9">
<input type="button" value="1" name="btn10">
<input type="button" value="/" name="btn11" style="padding-left: 9px"> <br>
<input type="button" value="0" name="btn12" style="padding- left:33px">
<input type="button" value="." name="btn13" style="padding-right:9px">
<input type="button" value="x" name="btn14" style="padding left: 7px"><br>
</div> <br>
<input type="button" id="Calculate" value="calculate" name="Calculator">
</form>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('input[type=button]').click(function(){
if($('#btnValue').val()==''){
$('#btnValue').val($(this).val());
}else{
$('#btnValue').val($('#btnValue').val()+($(this).val()));
}
});
$('#Calculate').click(function(){
var cal=$('#btnValue').val( );
$('#btnValue').val(cal.valueOf() );
});
});
</script>
</body>
</html>
我预计 2+3 的计算是 5 而不是 2+3。
解决方案
就像 KJEK-Code 所说的那样,您在所有按钮上设置了一个点击侦听器,然后尝试在计算按钮上进行设置。其次,cal.valueOf()
不会返回计算值,它会返回与 cal 相同的值。我基于此链接添加了一些修复:https ://codepen.io/simonja2/pen/QbGYbR
<!DOCTYPE html>
<html>
<head>
<title>calculater</title>
<script
src="https://code.jquery.com/jquery-3.3.1.js"
integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
crossorigin="anonymous"></script>
</head>
<body>
<div style="padding-left:40px">
<h2> PHP Calculator</h2>
<form method="post" id="formID">
Enter value: <input type="text" name="btnValue" id='btnValue'> <br> <br>
<div style="padding-left: 105px">
<input type="button" value="9" name="btn1">
<input type="button" value="8" name="btn2">
<input type="button" value="7" name="btn3">
<input type="button" value="+" name="btn4"> <br>
<input type="button" value="6" name="btn5">
<input type="button" value="5" name="btn6">
<input type="button" value="4" name="btn7">
<input type="button" value="-" name="btn8" style="padding-left: 9px"> <br>
<input type="button" value="3" name="btn8">
<input type="button" value="2" name="btn9">
<input type="button" value="1" name="btn10">
<input type="button" value="/" name="btn11" style="padding-left: 9px"> <br>
<input type="button" value="0" name="btn12" style="padding- left:33px">
<input type="button" value="." name="btn13" style="padding-right:9px">
<input type="button" value="x" name="btn14" style="padding left: 7px"><br>
</div> <br>
<input type="button" id="Calculate" value="calculate" name="Calculator">
</form>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('input[type=button]').click(function(){
console.log($(this).val());
if($(this).val() == "calculate") {
var cal=$('#btnValue').val( );
$('#btnValue').val(calculate(cal));
console.log(cal.valueOf());
} else {
if($('#btnValue').val()==''){
$('#btnValue').val($(this).val());
} else {
$('#btnValue').val($('#btnValue').val()+($(this).val()));
}
}
});
calculate = (value) => {
for (var i = 0; i < value.length; i++) {
if(isOperator(value[i])) {
var o = value[i];
var a = value.slice(0, i);
var b = value.slice(i+1);
return operate(a, b, o);
}
}
return value;
}
isOperator = function(value) {
return value === '/' || value === '*' || value === '+' || value === '-';
};
operate = function(a, b, operation) {
a = parseFloat(a);
b = parseFloat(b);
console.log(a, b, operation);
if (operation === '+') return a + b;
if (operation === '-') return a - b;
if (operation === '*') return a * b;
if (operation === '/') return a / b;
}
});
</script>
</body>
</html>
推荐阅读
- php - 通过在 PHP 中使用 CURL 下载的一些图像损坏
- python-3.x - 为什么 urllib.request 这么慢?
- java - 将 jdbc 连接传递给 spark 读取
- java - 收集基于相似索引的列表集合
- python - 弹出构象后,kivy将值从一个屏幕传递到另一个屏幕
- jquery - Jquery - 如果模糊存在,则不是来自输入的值
- html - 如果是空的,则填充空白空间
- android - 使用意图 android 发送短信后返回我的应用程序
- javascript - 从文档 getElementById 重置数据
- macos - 我可以在 Docker Desktop for Mac 上运行 Windows 容器吗?