【问题标题】:When "i" reaches higher than 9, it fails当“i”达到大于 9 时,失败
【发布时间】:2014-12-23 06:29:31
【问题描述】:

下面的代码可以正常工作,直到“i”达到 10。

divCount 等于 11。

我在++i 之后添加了一个alert(i);,它确认已达到 10,然后什么也没发生。甚至没有调用 updateVer。

<script>

var divCount;
var mcsUrl;
var i = 0;  

//Count number of Divs
$(document).ready(function(){ 
  divCount = $("div").size();

  myLoop(); //update mcs versions
});


function myLoop () {           
    ++i;

    mcsUrl = document.getElementById('url'+i).innerHTML;
    updateVer(mcsUrl);
}

function updateVer(a) {

    $.getScript(a + "/myspeed/MySpeedServer/mss/js", function(){

        document.getElementById("version"+i).innerHTML = mss_version;

        if (document.getElementById("version"+i).innerHTML != "9.7j") {
            document.getElementById("version"+i).style.color = "#FF0000";
        }
        else {
            document.getElementById("version"+i).style.color = "#006633";
        }

        if (i < divCount) {
        myLoop();
        }
    });
}


</script>

【问题讨论】:

  • 1) 你的 html 代码在哪里? 2)你为什么混合纯js选择器和jquery? 3) 很可能你没有对应 id 的元素。
  • 您是否尝试过打开调试器 (F12) 并检查是否有错误消息?这可能会立即告诉您问题出在哪里。
  • @Cheery "version10", "url10", "version11", "url11" 存在于 HTML 中。
  • @Lochemage ,是的,调试器中没有显示 JS 错误
  • 你能提供这段代码的 html 吗?

标签: javascript jquery html loops increment


【解决方案1】:

安排你的计数...

function myLoop () {           
   

    mcsUrl = document.getElementById('url'+i).innerHTML;
    updateVer(mcsUrl);
  
   ++i;
}

【讨论】:

    【解决方案2】:

    您还没有真正提供足够的上下文来解决您遇到的任何问题。比如a + "/myspeed/MySpeedServer/mss/js"的内容是什么?话虽如此,这里有一些帮助调试的技巧。

    1) 注释掉或删除代码行,直到它开始工作。也许首先将updateVer 减少为:

    function updateVer(a) {
        $.getScript(a + "/myspeed/MySpeedServer/mss/js", function(){
            if (i < divCount) {
            myLoop();
            }
        });
    }
    

    2) 检查浏览器的调试控制台。查看它是否显示任何错误消息。

    3) $.getScriptsuccess 回调仅在远程脚本下载成功时运行。你确定脚本 #10 没有给你类似 404 的错误吗?

    【讨论】:

    • 我有以“url”开头并以 1-11 结尾的 div,并且我有以“version”开头并以 1-11 结尾的跨度。我在 10 之前收到的输出与预期的一样
    【解决方案3】:

    $.getScript(a + "/myspeed/MySpeedServer/mss/js", function(){ 失败了,所以我需要添加代码来弥补这一点:

    所以现在看起来像:

    $.getScript(a + "/myspeed/MySpeedServer/mss/js")
            .done(function() {
                document.getElementById("version"+i).innerHTML = mss_version;
    
                if (document.getElementById("version"+i).innerHTML != "9.7j") {
                    document.getElementById("version"+i).style.color = "#FF0000";
                }
                else {
                    document.getElementById("version"+i).style.color = "#006633";
                }
    
                if (i < divCount) {
                    myLoop();
                }
            })
             .fail(function() {
                document.getElementById("version"+i).innerHTML = "FAIL";
    
                if (i < divCount) {
                    myLoop();
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多