Javascript 页面转到无限循环 函数insval() { var insno=document.getElementById('ins').value; var a=1; 对于(k=1;k

Javascript 页面转到无限循环 函数insval() { var insno=document.getElementById('ins').value; var a=1; 对于(k=1;k,javascript,php,jquery,Javascript,Php,Jquery,您需要将数字与数字进行比较,而不是像在循环中那样将数字与字符串进行比较。解决方案非常简单: <script type="text/javascript"> function insval() { var insno=document.getElementById('ins').value; var a=1; for(k=1;k<=insno;k++) { if((document.getElementById('num_cat'

您需要将数字与数字进行比较,而不是像在循环中那样将数字与字符串进行比较。解决方案非常简单:

<script type="text/javascript">
function insval()
{

    var insno=document.getElementById('ins').value;
    var a=1;
    for(k=1;k<=insno;k++)
    {
        if((document.getElementById('num_cat'+k).value=="")||(document.getElementById('num_cat'+k).value=="0"))
        {

            alert("Please Select Number of Insulins");
            a=2;
            return false;
        }
        else
        {
            var num = $('#num_cat'+ k).val();

            var i;
            for(i=1;i<=num;i++)
            {
                if(document.getElementById('insulin'+k+i).value=="")
                {
                    alert("Please Insert Insulins");
                    a=2;
                    return false;
                }
            }

        }

        if(a==2)
        {
            return false;
        }
        if((k+1)==insno)
        {
            tabval();
        }
    }

    function tabval()
    {
        var tabno=document.getElementById('tabletno').value;

        for(k=1;k<=tabno;k++)
        {
            if((document.getElementById('tab_cat'+k).value=="")||(document.getElementById('tab_cat'+k).value=="0"))
            {
                alert("Please Select Number of Tablets");
                a=2;
                return false;
            } 
            else
            {
                var num = $('#tab_cat'+ k).val();
                var i;
                for(i=1;i<=num;i++)
                {
                    if(document.getElementById('tablet'+k + i).value==""||document.getElementById('tablet'+k + i).value=="0")
                    {
                        alert("Please Insert Tablets");
                        a=2;
                        return false;
                    }
                }
            }
        }
    }

}
</script>

当您将输入值读取为

var insno= parseInt(document.getElementById('ins').value,10);
返回的值是javascript中的字符串

因此,您必须使用

    var insno=document.getElementById('ins').value;
还可以在for循环中定义“k”变量的范围。 在嵌套函数tabval中,“k”的值再次重置为1,因此for循环(insval)再次从k=1开始


这应该可以解决无限循环的问题。

我想检查insno=2和tabno=0的值是否有for循环(k=1;k'insno'是一个数字,我可以打印出来。但是当你说:var insno=document.getElementById('ins').value;那么insno将是一个类似“2”的文本,而不是数字2。这就是为什么你需要添加parseInt(…)正如我上面所描述的,我还更改了var tabno=parseInt(document.getElementById('tabletno').value,10);如果删除tabval()函数,它将起作用。我认为tabval()函数有一些问题。您还需要将变量“num”更改为整数:var num=parseInt($('#tab_cat'+k).val(),10);变量“tabno”也是如此是否可以在insval()内调用tabval()。您可以在insval内调用tabval,但我注意到您没有正确地确定“k”变量insval的作用域为(k=1;k)
    var insno=document.getElementById('ins').value;
    var insno=parseInt(document.getElementById('ins').value,10);