JavaScript (DOM) 打印下一个素数类型转换问题

JavaScript (DOM) print next prime typecasting issue

我的一位研究多媒体艺术的朋友在他的 HTML+JavaScript 家庭作业中接到了一项任务,任务如下:制作一个按钮,单击该按钮会生成下一个素数(下一个在 <p> 标签之间给出的那个之后。他把它带给我来解决它,乍一看我认为这是一个非常简单的问题并编写了代码。但是它没有打印下一个素数,而是打印 NaN 现在我对自己简单的 JavaScript 技能没有以前那么自信了。这是我的代码:

function isPrime(num) {
    for (var i = 2; i < Math.sqrt(num) + 1; ++i) {
        if(num % i === 0) {
            return false;
        }
    }
    
    return num !== 1;
}

function getNextPrime(prime) {
    for (var count = prime + 1; ; ++count) {
      if (isPrime(count)) {
        break;
      }
    }
    
    return count;
}

function printNextPrime() {
    var p = parseInt(document.getElementById("primePar").value);
    var next = getNextPrime(p);
    
    document.getElementById("primePar").innerHTML = next;
}

<!DOCTYPE html>
<html>
    <head>
        <title>Prime Number Generator</title>
        <script type="text/javascript" src="main.js"></script>
    </head><body>
        <button onclick="printNextPrime()">Generate Next Prime!</button>
        <p id="primePar">2</p>
    </body>
</html>

我怀疑问题出在我所做的错误类型转换上,但是当我仔细扫描我的代码几次后,我无法找到它。请帮忙!

您的问题在这里:

function printNextPrime() {
    var p = parseInt(document.getElementById("primePar").value);
    var next = getNextPrime(p);

    document.getElementById("primePar").innerHTML = next.toString();
}

您正在查找值 属性,但 属性 仅存在于 "input" DOM 个对象中。相反,您应该也可以在那里使用 .innerHTML。

function printNextPrime() {
    var p = parseInt(document.getElementById("primePar").innerHTML);
    var next = getNextPrime(p);

    document.getElementById("primePar").innerHTML = next.toString();
}