javascript - JavaScript输入值不断消失
问题描述
所以我正在尝试使用 JavaScript 制作一个简单的计算器。每当我按下按钮时,计算结果就会出现,但只显示几分之一秒。我猜每次按下按钮时页面都会刷新,因此输入字段被清空。我怎样才能使按钮被按下并且页面也保持不变。
这是 JavaScript 代码:
var operator;
var num1,num2;
document.getElementById("submit").addEventListener("click",function(){
var cI = checkInputs();
if(cI){
operator = document.getElementById("operatorInput").value;
num1 = parseInt(document.getElementById("fNumber").value);
num2 = parseInt(document.getElementById("sNumber").value);
if(operator == "+"){
add(num1,num2);
}
}
else{
alert("fill values first");
}
})
function add(num1,num2){
var sum = num1 + num2;
document.getElementById("output").value = sum;
}
function checkInputs(){
var s = document.getElementsByClassName("mainInputs");
var c =0;
for(var i=0;i<s.length;i++){
if(s[i].value.length == 0){
c++;
break
}
}
if(c > 0){
return false;
}
else{
return true;
}
}
这是 HTML 代码:
<!DOCTYPE html>
<html>
<head>
<title>The Calculator</title>
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="container">
<h1 ">The Calculator</h1>
<form>
<div class="row" style="margin-bottom: 2%;">
<div class="col-md-5 jCenter">
<input type="number" id="fNumber" name="fNumber" placeholder="First Number" class="jCenter firstButtons mainInputs">
</div>
<div class="col-lg-2 jCenter">
<input type="text" id="operatorInput" name="operator" class="jCenter firstButtons mainInputs">
</div>
<div class="col-md-5 jCenter">
<input type="number" id="sNumber" placeholder="Second Number" name="sNumber" v class="jCenter firstButtons mainInputs">
</div>
</div>
<div id="submitButton">
<button id="submit" >submit</button>
</div>
<div class="row ">
<div class="col-lg-3 jCenter">
<button id="+" class="cButtons">+</button>
</div>
<div class="col-lg-3 jCenter">
<button id="-" class="cButtons">-</button>
</div>
<div class="col-lg-3 jCenter">
<button id="x" class="cButtons">*</button>
</div>
<div class="col-lg-3 jCenter">
<button id="d" class="cButtons">/</button>
</div>
</div>
<div class="row">
<div class="col-lg-3 jCenter">
<button id="sin" class="cButtons">sin</button>
</div>
<div class="col-lg-3 jCenter">
<button id="cos" class="cButtons">cos</button>
</div>
<div class="col-lg-3 jCenter">
<button id="tan" class="cButtons">tan</button>
</div>
<div class="col-lg-3 jCenter">
<button id="p" class="cButtons">%</button>
</div>
</div>
<div class="row">
<div class="col-lg-3 jCenter">
<button id="sqrt" class="cButtons">sqrt</button>
</div>
</div>
<div id="outputDiv">
<input type="text" name="output" id="output" class="firstButtons jCenter">
</div>
</form>
</div>
</body>
<script type="text/javascript" src="calculator.js"></script>
</html>
我知道我是菜鸟和天真。但一点帮助将不胜感激。
解决方案
找到它,只需在提交按钮中输入“type="button"”。
<button id="submit" type="button" >submit</button>
这可以防止页面刷新。
推荐阅读
- javascript - 在道具中遇到问题“无法读取未定义的属性‘地图’”
- vba - 单元格值取决于活动单元格
- sql-server - 如何使用位列进行分组?
- linux - chown: 无效用户: '+x'
- c# - 如何获取更新的 C# 的 2 个文本框中的值的总和
- json - 如何在 kentico kontent 中重新导入 DeliveryAPI 结果
- javascript - 如何使用 Wavesurfer JS 检测波形何时加载到画布中
- android - INSTALL_FAILED_CONFLICTING_PROVIDER
- ios - 如何在 Swift 中以编程方式从 UIView 中删除安全区域?
- amazon-s3 - S3 仅存储由一个默认 KMS 密钥加密的对象并限制所有其他对象