javascript - If 语句不显示结果
问题描述
所以其余的代码也可以按我的需要工作。下面列出了唯一不起作用的部分。我想要完成的是,如果SENTINEL
在程序启动后输入,numResults
并且floatResults
将收到以下值。我在哪里没有正确编码,所以语句不起作用?感谢您的帮助
如果声明给了我这个问题
// gives value if only the SENTINEL is entered once program is initiated
if (number == SENTINEL && numValues == 0 && floatValues == 0 ) {
numResults = document.getElementById("numbers").innerHTML = " No values were entered."
floatResults = document.getElementById("floating").innerHTML = " No values were entered."
}
我的代码
<script>
function examineNumbers() {
const SENTINEL = -1;
let number = 0;
let type;
let numValues = 0;
let numAverage = 0;
let floatValues = 0;
let numTotal = 0;
let floatTotal = 0;
let list = document.getElementById("list");
let numbers = document.getElementById("numbers");
let floating = document.getElementById("floating");
// while loop to only allow numbers greater than zero to be inputted
while (number != SENTINEL) {
number = prompt("Enter a number. Type " + SENTINEL + " to stop.");
if (number == -1) {
break;
}
// deterrmines if a number is even
if (number % 2 == 0) {
type = " is an even value";
numTotal += parseInt(number);
numValues++;
}
// determines if a number is odd
else if (Math.abs(number % 2) == 1) {
type = " is an odd value";
numTotal += parseInt(number);
numValues++;
}
// gives a floating point type if above two aren't met
else {
type = " is a floating point value.";
floatTotal += parseFloat(number);
numTotal += parseFloat(number);
numValues++;
floatValues++;
}
let numResults;
let floatResults;
// averages non floating numbers
numAverage = numTotal / numValues;
numResults = document.getElementById("numbers").innerHTML = " The total is " + numTotal.toFixed(2) +
" and the average is " + numAverage.toFixed(2) + ".";
// gives value if only the SENTINEL is entered once program is initiated
if (number == SENTINEL && numValues == 0 && floatValues == 0 ) {
numResults = document.getElementById("numbers").innerHTML = " No values were entered."
floatResults = document.getElementById("floating").innerHTML = " No values were entered."
}
// averages floating point numbers
floatAverage = floatTotal / floatValues;
floatResults = document.getElementById("floating").innerHTML = "The sum of just the floating point values is " + floatTotal.toFixed(2) +
" with the average of " + floatAverage.toFixed(2) + ".";
// gives value if no floating numbers are entered
if (floatValues == 0 ) {
floatResults = document.getElementById("floating").innerHTML = "No floating-pont values were entered."
}
let li = "";
//only add number and its status to list when number not equal to SENTINEL
if (number !== SENTINEL) {
li = document.createElement("li");
li.innerHTML = number + type;
list.appendChild(li);
// displays information for both non floating numbers and floating numbers
numbers.innerHTML = numResults;
floating.innerHTML = floatResults;
}
}
}
</script>
<h1>Number Examination Tool </h1>
<form name="myForm" >
<button type="button" onclick="examineNumbers();">Click here to enter numbers </button>
<h3>List of Numbers </h3>
<ul id = "list"></ul>
<div id="numbers"></div>
<div id="floating"></div>
</form>
解决方案
如果您像下面这样移动 IF 语句,您正在破坏 IF 语句,因此它永远不会结束
number = prompt("Enter a number. Type " + SENTINEL + " to stop.");
// gives value if only the SENTINEL is entered once program is initiated
if (number == SENTINEL && numValues == 0 && floatValues == 0 ) {
document.getElementById("numbers").innerHTML = " No values were entered."
document.getElementById("floating").innerHTML = " No values were entered."
while (list.children.length>0) {
list.lastChild.remove()
}
}
if (number == -1) {
break;
}
它应该可以工作,或者你可以结合声明,
number = prompt("Enter a number. Type " + SENTINEL + " to stop.");
// gives value if only the SENTINEL is entered once program is initiated
if (number == -1) {
if (numValues == 0 && floatValues == 0) {
document.getElementById("numbers").innerHTML = " No values were entered."
document.getElementById("floating").innerHTML = " No values
were entered."
while (list.children.length>0) {
list.lastChild.remove()
}
}
break;
}
推荐阅读
- javascript - NodeJS:测试IP是否可达的问题
- dbt - 如何在代理后面运行 dbt deps?
- javascript - 在 Safari 中将输入插入符号位置设置为模糊而不重新聚焦输入
- pyspark - Pyspark load-csv 不显示新文件的真实模式(仅“推断”模式)
- asp.net-core - .net 核心 5 DropDownListFor
- mongodb - 筛选 MongoDB 聚合中的查找集合
- javascript - JavaScript - 直接在多行字符串中循环遍历数组并包含值
- python - Pyside6 应用程序在 2 次定时器超时和图片上的蓝色色调后退出
- r - 我应该如何获得均值和标准差取决于“日”和“类别”列,而无需在 R 代码中手动过滤
- java - 任务“:app:javaPreCompileDebug”执行失败