首页 > 解决方案 > 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>

标签: javascripthtml

解决方案


如果您像下面这样移动 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;
  }

推荐阅读