简体   繁体   English

我无法在以下代码中设置Global变量。 我究竟做错了什么?

[英]I am not able to set the Global variable in the following code. What am i doing wrong?

Here is the issue: I am trying check and uncheck the check boxes by a group. 这是问题所在:我正在尝试按组选中和取消选中复选框。

So if you select G1 and G2, it throws a message that you cant mix groups. 因此,如果选择G1和G2,则会引发一条消息,提示您无法混合组。 If you uncheck all of them, i am trying to clear the existing grouping and that is where the code seems to fail. 如果您取消选中所有选项,则我将尝试清除现有的分组,这似乎是代码失败的地方。

Any thoughts? 有什么想法吗? (also,i might be having a wrong idea about that global var at the beginning. so please suggest) (另外,一开始我可能对全局变量有一个错误的想法。所以请提出建议)

<HTML>
<script language="javascript">
var prodSel="";
function VerifyGroup(a,b)
    {
    ClearAllSelectionsA(); // check if this is the last unselect and clear the prodSel variable
        if (prodSel == "") 
            {
                prodSel = a;
            }else 
            {
            if (prodSel != a)
                {
                alert ( "Please ensure that the groups are same for the items you select");
                //alert(b);
                document.getElementById(b).checked  = false;
                }
            }

}

function ClearAllSelections()
{
    var inputs = document.getElementsByTagName("input"); 
    var cbs = []; 
        for (var i = 0; i < inputs.length; i++) 
            {  
                if (inputs[i].type == "checkbox") 
                    {  
                        inputs[i].checked = false;
                    }  
            }  
prodSel=""; // Clear the  variable; allow new selections
}

/*loop through and if all of them are unchecke,d clear the variable*/
function ClearAllSelectionsA()
{
var clre = true;
    var inputs = document.getElementsByTagName("input"); 
    var cbs = []; 
        for (var i = 0; i < inputs.length; i++) 
            {  
                if (inputs[i].type == "checkbox") 
                    {  
                        if (inputs[i].checked){clre= false;}
                    }  
            }  
            if (clre){
prodSel=""; // Clear the  variable; allow new selections
alert(window.prodSel);
}
}
</script>
<body>


G1<input type="checkbox" value="zxc" id="12" onclick="javascript:VerifyGroup('g1',12);"><BR>
G1<input type="checkbox" value="zxcw" id="123" onclick="javascript:VerifyGroup('g1',123);"><BR>
G1<input type="checkbox" value="zxcdw" id="124" onclick="javascript:VerifyGroup('g1',124);"><BR>
G2<input type="checkbox" value="zxcf" id="125" onclick="javascript:VerifyGroup('g2',125);"><BR>
G2<input type="checkbox" value="zxcfg" id="126" onclick="javascript:VerifyGroup('g2',126);"><BR>
<a href="#" onclick="ClearAllSelections();">clear group</a>
</body>
</html>

When you call ClearAllSelectionsA , if all the checkboxes are unchecked, then prodSel gets cleared. 调用ClearAllSelectionsA ,如果所有复选框prodSel选中,则prodSel将被清除。 Then back in VerifyGroup , prodSel is immediately being reassigned to a . 然后回到VerifyGroupprodSel立即被重新分配给a My recommendation would be to return true or false from ClearAllSelectionsA and act based upon that value. 我的建议是从ClearAllSelectionsA返回true或false并根据该值执行操作。

<script language="javascript">
var prodSel="";
function VerifyGroup(a,b)
{
    var cleared = ClearAllSelectionsA(); // check if this is the last unselect and clear the prodSel variable
    if (prodSel == "" && !cleared) //only reset prodSel if there is a checkbox checked
    {
        prodSel = a;
    }else 
    {
        if (prodSel != a)
        {
            alert ( "Please ensure that the groups are same for the items you select");
            //alert(b);
            document.getElementById(b).checked  = false;
        }
    }
}

function ClearAllSelections()
{
    var inputs = document.getElementsByTagName("input"); 
    var cbs = []; 
    for (var i = 0; i < inputs.length; i++) 
    {
        if (inputs[i].type == "checkbox") 
        {
            inputs[i].checked = false;
        }
    }
    prodSel=""; // Clear the  variable; allow new selections
}

/*loop through and if all of them are unchecke,d clear the variable*/
function ClearAllSelectionsA()
{
    var clre = true;
    var inputs = document.getElementsByTagName("input"); 
    var cbs = []; 
        for (var i = 0; i < inputs.length; i++) 
        {  
            if (inputs[i].type == "checkbox") 
            {  
                if (inputs[i].checked){clre= false;}
            }  
        }  
        if (clre){
             prodSel=""; // Clear the  variable; allow new selections
             alert(window.prodSel);
        }
        return clre;
    }
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM