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

循环中的Javascript循环仅第一次执行,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 = docum

请参见下面我的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
功能验证\提交(PassForm){
var bGo=假;
var rankcount=document.getElementById('rankcount').value;
var j=0;
var iRankcount0=document.getElementById('indRankcount0')。值;
var iRankcount1=document.getElementById('indRankcount1')。值;
var iRankcount2=document.getElementById('indRankcount2')。值;
var-ijs=0;
var itemp=ijs;
对于(i=0;i
问题是当i=0时,它执行得很好。但当i=1时,第二个循环(K)不执行(我们将变量切换为常量-它对itemp或indRankcount都有效。只有一个数字执行了)。它完全跳过。救命啊!谢谢大家!

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

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

更新后,在k循环之前尝试此操作,它将显示为什么k不会在2上启动。执行

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

欢迎来到堆栈溢出!请仔细阅读,特别是在寻求帮助时,请花时间以一致和合理的方式格式化和缩进您的代码,以尊重您请求帮助的人的时间。(不管怎样,为你自己也这样做是个好主意。)我已经为你运行了代码。(无从属关系。)它对
i==2
有效吗?到目前为止,了解发生了什么事情的最好方法是使用IDE或浏览器中内置的强大调试器,逐个语句地执行代码语句,观察变量的值等。不,对i==2无效。谢谢您的回复。对于i=0,itemp=0,indRankcount=7。然后我需要转到下一个组进行验证,所以我将indRankcount移动到itemp,我也将indRankcount1=11,并将其移动到indRankcount。对于i=1,itemp=7,这是k的开始,indRankcount=11。这是一种情况,但我的组可能会有所不同。“iRankcount0”、“iRankcount1”和“iRankcount2”值是否包含递增的数字?因为如果(iRankcount0>iRankcount1>iRankcount2)内部循环没有执行,就在第一次执行之前。尝试在循环的开始处记录“i”和“k”。它在第一次内部循环执行后返回false吗?实际上它的iRankcount0