从 HTML 上的 javascript 获取输出时,按钮 onclick 不显示任何输出

问题描述 投票:0回答:1

以下是代码:

let i, j;

function isPrime(x) {
  for (j = 2; j < int(Math.sqrt(x)) + 1; j++) {
    if (x % j == 0)
      return False;
    return True;
  }
}

function findPrimeNum() {
  let number = document.getElementById("inputNumber");
  for (i = number - 1; i > 1; i--) {
    if (isPrime(i) == True)
      document.getElementById('result').innerHTML = 'Largest prime less than or equal to ' + number + ': ' + i;
    return i;
  }

}
<!-- Input field and button -->
<input type="number" id="inputNumber" placeholder="Enter a number">
<button onclick="findPrimeNum()">Find Largest Prime</button>

<!-- Result display -->
<p id="result"></p>

我尝试过 return True;在 for 块下方。我也尝试过将

innerHTML
放在函数之外。控制台上没有显示错误。请检查

javascript html button
1个回答
0
投票

您的 JavaScript 代码似乎存在一些问题,可能导致该函数无法按预期运行。这是代码的修订版本以及更改的说明:

   function isPrime(x) {
      if (x <= 1) return false; // Add this line to handle cases where x is 1 or less.
      for (let j = 2; j <= Math.sqrt(x); j++) { // Changed 'int' to 'let' for proper syntax and initialization.
        if (x % j == 0)
          return false; // Return should be lowercase.
      }
      return true; // This return statement should be outside the for loop.
    }

   function findPrimeNum() {
      let number = parseInt(document.getElementById("inputNumber").value); // Added .value to actually get the input value.
      for (let i = number; i > 1; i--) { // Changed 'let' from 'i = number - 1' to 'i = number' to include the possibility that 'number' itself is prime.
        if (isPrime(i)) { // Removed "== True" as it is unnecessary.
          document.getElementById('result').innerHTML = 'Largest prime less than or equal to ' + number + ': ' + i;
          return; // Removed 'return i;' to prevent the function from terminating before updating the innerHTML.
        }
      }
      document.getElementById('result').innerHTML = 'No primes found.'; // Handles the case where no primes are found.
    }
© www.soinside.com 2019 - 2024. All rights reserved.