仅循环内的 Javascript 循环第一次执行

标签 javascript

请参阅下面我的 js 验证函数。

function validate_submit(PassForm) {
    var bGo = false;
    var rankcount = document.getElementById('rankCount').value;

    var j = 0;

    var iRankcount0 = document.getElementById('indRankcount0').value;
    var iRankcount1 = document.getElementById('indRankcount1').value;
    var iRankcount2 = document.getElementById('indRankcount2').value;

    var ijs = 0;
    var itemp = ijs;

    for (i = 0; i < rankcount; i++) {
        alert("begin i = " + i);
        if (i == 0) {
            indRankcount = iRankcount0;
        }
        else if (i == 1) {
            alert('indRankcount: ' + indRankcount);
            indRankcount = iRankcount1;
            alert('iRankcount1: ' + iRankcount1);
            alert('indRankcount: ' + indRankcount);
        }
        else if (i == 2) {
            indRankcount = iRankcount2;
        }
        alert('before sec loop indRank: ' + indRankcount);
        alert('before sec loop itemp: ' + itemp);
        for (k = itemp; k < indRankcount; k++) {
            alert('in check bGo');
            if (document.getElementById("selectedScore" + i + k).checked) {
                bGo = true;
                j++;
            } //if
        } //for indRankcount - k loop

        if (bGo) {
            if (i == 0) {
                par = (Math.ceil(indRankcount / 4));
            }
            else if (i == 1) {
                par = (Math.ceil((iRankcount1 - iRankcount0) / 4));
                alert('1: ' + par);
            }
            else if (i == 2) {
                par = (Math.ceil((indRankcount2 - iRankcount1) / 4));
            }
            if (j == par) {
                j = 0;
                bGo = false;
                itemp = indRankcount;
                alert("itemp = " + itemp);
                continue;
            }
            else {
                alert('25% criteria not met.');
                return false;
            }
        }
        else { //else to check bGo
            alert('Atleast one box need to be selected.');
            return false;
        }
        j = 0;
        bGo = false;
        itemp = indRankcount;
        alert("loop ends: i =" + i);
    } //for rankcount - i loop

    res = window.confirm('Are you sure you want to proceed with the selection?');
    if (res) {
        return true;
    }
    else {
        return false;
    }
} //end of validate

问题是当 i=0 时,它执行得很好。但是当 i=1 时,第二个循环 (K) 不会执行(我们将变量切换为常量 - 它适用于 itemp 或 indRankcount。只需一个数字即可完成。)它完全跳过。请帮助!谢谢!

最佳答案

在内循环(使用“k”)之后,有一个“item = indRankcount;”线。我想这就是问题的原因。

第一次运行时,“itemp”为 0,因此内部循环介入,但在第二次运行时,该值大于或等于“i​​ndRankcount”,因为您之前调用了代码。 “iRankcount0”、“iRankcount1”和“iRankcount2”中存储了哪些值? 尝试在 2. 循环之前打印“itemp”和“indRankcount”值。

已更新,在 k 循环之前尝试此操作,它将显示为什么 k 没有在 2. 执行时启动。

Console.log(i + "loop:: " + itemp + " val (k first val), " + " indRankcount " + val (k end val));

关于仅循环内的 Javascript 循环第一次执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48341773/

相关文章:

javascript - 如何在上一个 Action 仍在发生时阻止 JQuery Action

javascript - 正则表达式中的无效组

javascript - 在其他图像的网格上扩展和重叠图像

javascript - 文本、复选框、使用 Jquery 选择输入的单一事件函数

javascript - 滚动 div 时延迟动画

javascript - 使用 webpack 没有名为 media-breakpoint-down 的 mixin

javascript - Casper.js的sendEvent在哪里定义的?

JavaScript随机生成12小时格式的时间

javascript - DOM 对象克隆器 Javascript 小部件

c# - CheckBox 事件找不到 javascript 函数