javascript - JQuery 将错误的值附加到变量

标签 javascript jquery html

我正在制作一个页面来计算和显示从 1 到 100 的所有质数。实际的质数计算工作正常,但是当我试图通过 JQuery 附加测试为质数的数字时,它会改为附加它每次都作为数字 101。

JS代码:

function primeFinder() {
    var testNum = 1;
    var failures = 0;
    var checkNum = testNum -1;
    while(testNum <= 100) {
        while(checkNum > 1) {
            if ((testNum/checkNum)%1 != 0) {
                failures += 1;
                checkNum -= 1;

                }
            else {
                checkNum -= 1;
                }               
            }
        if (failures == testNum - 2) {
                $(document).ready(function(){
                    $("#results").append(testNum + "<br>")
                })
                failures = 0;
                testNum +=1;
                checkNum = testNum -1;
        }
        else {
            failures = 0;
            testNum +=1;
            checkNum = testNum -1;
        }
    }
}

它正确地附加了它,它只是附加了不正确的值,原因我无法弄清楚。如果我将变量更改为文本,那么它就没有问题。这只是它无法正确处理的变量。

最佳答案

根据我的评论:您在每个循环中附加 testNum,但仅在文档准备好之后。这导致 testNum 的最终值被附加,因为循环很可能在文档准备好之前就已经执行了。

要避免此问题,只需将整个函数包装在 DOM 就绪事件中,就可以开始了。这是基于您提供的代码的概念验证片段。

$(document).ready(function() {
   // You can move this function declaration outside DOM ready, doesn't matter
   var primeFinder = function() {
     var testNum = 1;
     var failures = 0;
     var checkNum = testNum - 1;
     while (testNum <= 100) {
       while (checkNum > 1) {
         if ((testNum / checkNum) % 1 != 0) {
           failures += 1;
           // console.log(checkNum + " ~~~ " + failures);
           checkNum -= 1;

         } else {
           checkNum -= 1;
         }
       }
       if (failures == testNum - 2) {
         console.log(testNum + " is prime!");

         $("#results").append(testNum + "<br>")
         failures = 0;
         testNum += 1;
         checkNum = testNum - 1;
       } else {
         // console.log(testNum + " is NOT prime!");
         failures = 0;
         testNum += 1;
         checkNum = testNum - 1;
       }
     }
   }
   
   // But you must execute this function within DOM ready
   primeFinder();
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="results"></div>

关于javascript - JQuery 将错误的值附加到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41645493/

相关文章:

javascript - D3 : adding a line when clicking on a circle in scatter plot

javascript - 单击功能中输入字段值不变

javascript - 只要我确保将所有 & 替换为 & 然后将所有 < 替换为 <,XSS 如何工作?

javascript - 如何避免在加载页面时看到 Cufon 字体替换工具的渲染?

javascript - Angular JS Controller 初始化错误

javascript - 创建两个可以互相通信的 jQuery 插件

javascript - 如果不满足最小最大范围,模式对话框中的输入文本验证会提示

javascript - Kinect SDK for HTML 5 Javascript,可识别 4 人

html - 可以禁用 html5 视频嵌入代码中的 "Copy Link URL"吗?

html - 用 <td>/<tr> 填充