javascript - 如何在我的程序中将空白输入视为 0?
问题描述
我正在尝试构建一个 GPA 计算器,但想让输入成绩的过程更容易。在计算器的当前状态下,学生必须手动将所有数字输入输入,即使他们没有收到该字母的等级(因此会输入零)。有没有办法让程序将空白输入解释为零?谢谢!
function computeGPA() {
var aPlus = document.getElementById("aPlus").value;
var a = document.getElementById("a").value;
var aMinus = document.getElementById("aMinus").value;
var bPlus = document.getElementById("bPlus").value;
var b = document.getElementById("b").value;
var bMinus = document.getElementById("bMinus").value;
var cPlus = document.getElementById("cPlus").value;
var c = document.getElementById("c").value;
var cMinus = document.getElementById("cMinus").value;
var dPlus = document.getElementById("dPlus").value;
var d = document.getElementById("d").value;
var dMinus = document.getElementById("dMinus").value;
var f = document.getElementById("f").value;
var og = ((aPlus * 4) + (a * 4) + (aMinus * 3.7) + (bPlus * 3.3) + (b * 3) + (bMinus * 2.7) + (cPlus * 2.3) + (c * 2) +
(cMinus * 1.7) + (dPlus * 1.3) + (d * 1) + (dMinus * .7)) / (parseInt(aPlus) +
parseInt(a) + parseInt(aMinus) + parseInt(bPlus) + parseInt(b) + parseInt(bMinus) +
parseInt(cPlus) + parseInt(c) + parseInt(cMinus) +
parseInt(dPlus) + parseInt(d) + parseInt(dMinus) + parseInt(f));
var prettyOg = og.toFixed(2);
document.getElementById("og").innerHTML = "GPA: " + prettyOg;
}
<!DOCTYPE html>
<html>
<title>Final Grade Calculator</title>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="gpa.css">
</head>
<nav>
<ul>
<LH>Class Calculator</LH>
<li><a href="/Users/rmogauro21/Desktop/CC/Needed/needed.html"> Needed Grade</a></li>
<li><a href="/Users/rmogauro21/Desktop/CC/Final /final.html"> Final Grade</a></li>
<li><a href="/Users/rmogauro21/Desktop/CC/GPA /gpa.html"> GPA Calculator</a></li>
<li><a href="/Users/rmogauro21/Desktop/CC/About/about.html"> About Page</a></li>
<li><a href="/Users/rmogauro21/Desktop/CC/Header/header.html"> Home Page</a></li>
</ul>
</nav>
</body>
<h1> GPA Calculator</h1>
<p>Number of A+:<input id="aPlus" min="0" max="120"></input>
</p>
<p>Number of A: <input id="a" min="0" max="120"></input>
</p>
<p>Number of A-:<input id="aMinus" min="0" max="120"></input>
</p>
<p>Number of B+:<input id="bPlus" min="0" max="120"></input>
</p>
<p>Number of B: <input id="b" min="0" max="120"></input>
</p>
<p>Number of B-:<input id="bMinus" min="0" max="120"></input>
</p>
<p>Number of C+:<input id="cPlus" min="0" max="120"></input>
</p>
<p>Number of C: <input id="c" min="0" max="120"></input>
</p>
<p>Number of C-:<input id="cMinus" min="0" max="120"></input>
</p>
<p>Number of D+:<input id="dPlus" min="0" max="100"></input>
</p>
<p>Number of D: <input id="d" min="0" max="120"></input>
</p>
<p>Number of D-:<input id="dMinus" min="0" max="120"></input>
</p>
<p>Number of F: <input id="f" min="0" max="120" <br>
<br>
<br>
<button onclick="computeGPA()">Submit</button>
<h2 id="og"></h2>
<h3>Note: please fill in "0" for all grades that you haven't recieved</h3>
<h4>If you have any questions about the GPA calculator, click <a href="/Users/rmogauro21/Desktop/CC/GPA /gpainfo.html">here</h4>
</html>
解决方案
使用一元运算符 + 强制编号。空白字符串强制为 0。
添加||1
以防止被 0 除。在num||1
中,如果num
为 0 则为假,返回 1,防止被 0 除。
我还认为您打算将其type="number"
用于您的输入,如下所示:
<input type="number" id="aPlus" min="0" max="120"></input>
?
我添加了一行 JavaScript 以将其添加到所有标签中,但您可以将它们输入到 HTML 中。
document.querySelectorAll('input').forEach(x=>x.setAttribute('type','number'))
<!DOCTYPE html>
<html>
<title>Final Grade Calculator</title>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css"
href="gpa.css">
<script>
function computeGPA() {
var aPlus = +document.getElementById("aPlus").value;
var a = +document.getElementById("a").value;
var aMinus = +document.getElementById("aMinus").value;
var bPlus = +document.getElementById("bPlus").value;
var b = +document.getElementById("b").value;
var bMinus = +document.getElementById("bMinus").value;
var cPlus = +document.getElementById("cPlus").value;
var c = +document.getElementById("c").value;
var cMinus = +document.getElementById("cMinus").value;
var dPlus = +document.getElementById("dPlus").value;
var d = +document.getElementById("d").value;
var dMinus = +document.getElementById("dMinus").value;
var f = +document.getElementById("f").value;
var og = ((aPlus*4)+(a*4)+(aMinus*3.7)+(bPlus*3.3)+(b*3)+(bMinus*2.7)+(cPlus*2.3)+(c*2)+
(cMinus*1.7)+(dPlus*1.3)+(d*1)+(dMinus*.7))
/
((parseInt(aPlus)+
parseInt(a)+parseInt(aMinus)+parseInt(bPlus)+parseInt(b)+ parseInt(bMinus)+
parseInt(cPlus)+ parseInt(c)+ parseInt(cMinus)+
parseInt(dPlus)+parseInt(d)+parseInt(dMinus)+ parseInt(f)) || 1); // prevent div by 0
var prettyOg = og.toFixed(2);
document.getElementById("og").innerHTML = "GPA: " + prettyOg;
}
</script>
</head>
<nav>
<ul>
<LH>Class Calculator</LH>
<li><a href = "/Users/rmogauro21/Desktop/CC/Needed/needed.html"> Needed Grade</a></li>
<li><a href = "/Users/rmogauro21/Desktop/CC/Final /final.html"> Final Grade</a></li>
<li><a href = "/Users/rmogauro21/Desktop/CC/GPA /gpa.html"> GPA Calculator</a></li>
<li><a href = "/Users/rmogauro21/Desktop/CC/About/about.html"> About Page</a></li>
<li><a href = "/Users/rmogauro21/Desktop/CC/Header/header.html"> Home Page</a></li>
</ul>
</nav>
</body>
<h1> GPA Calculator</h1>
<p>Number of A+:<input id="aPlus" min="0" max="120"></input></p>
<p>Number of A: <input id="a" min="0" max="120"></input></p>
<p>Number of A-:<input id="aMinus" min="0" max="120"></input></p>
<p>Number of B+:<input id="bPlus" min="0" max="120"></input></p>
<p>Number of B: <input id="b" min="0" max="120"></input></p>
<p>Number of B-:<input id="bMinus" min="0" max="120"></input></p>
<p>Number of C+:<input id="cPlus" min="0" max="120"></input></p>
<p>Number of C: <input id="c" min="0" max="120"></input></p>
<p>Number of C-:<input id="cMinus" min="0" max="120"></input></p>
<p>Number of D+:<input id="dPlus" min="0" max="100"></input></p>
<p>Number of D: <input id="d" min="0" max="120"></input></p>
<p>Number of D-:<input id="dMinus" min="0" max="120"></input></p>
<p>Number of F: <input id="f" min="0" max="120"
<br>
<br>
<br>
<button onclick="computeGPA()">Submit</button>
<h2 id="og"></h2>
<h3>Note: please fill in "0" for all grades that you haven't recieved</h3>
<h4>If you have any questions about the GPA calculator, click <a href =
"/Users/rmogauro21/Desktop/CC/GPA /gpainfo.html">here</h4>
</html>
推荐阅读
- highcharts - 如何使 Highcharts 中饼图的连接器(连接数据标签的线)看起来是直线而不是弯曲的?
- angular - Azure 应用服务中的 Dotnet 发布错误 - 错误:找不到模块“@angular/core”
- babeljs - 如何在非nodejs环境/没有npm的情况下配置babel?
- unix - 仅从 csv 文件中获取重复项
- python - CNN 多输入,检查模型输入时出错:预计会看到 2 个数组,但得到了以下 1 个数组的列表:
- sql - 与 Oracle 部分匹配
- ios - 如何使可点击的 NSAttributedString 移动到另一个 ViewController Swift
- android - 如何以编程方式按 dialPad btn?
- java - 如何在 java CollectionUtils.class addAll 方法中分析“更改 |= collection.add(iterator.next()”?
- java - 删除数组元素后如何将元素向左移动?