复选框不会在IE7检查使用Javascript,却没有任何错误(Checkboxes will no

2019-06-24 05:37发布

好吧,我就这一个完全糊涂了。

我具有接收一堆值从JSON对象并创建一堆复选框和任一检查或取消选中基于它们的值的这些复选框的脚本。

该脚本正常工作在IE8,Firefox3的,等...等...

然而...

在IE7的脚本无法勾选复选框。 它显示没有错误,从我所知道的,脚本运行就好了。 我只是不检查任何复选框,我不知道为什么?

shoppingCart['Update_Stock_Item_0_NRD%5FHAT2'] = {
            'propeller': {
                            'label'          : 'propeller',                             
                            'optionValues'   : {                                                    
                                                 'on' : {
                                                    'selected': 'selected'
                                                        },
                                                  'off' : {
                                                            'selected': ''
                                                          },
                                                        '' : new String()
                                                }
                        },
            'sunLogo': {
                            'label'          : 'sunLogo',                           
                            'optionValues'   : {                                                    
                                                 'on' : {
                                                    'selected': 'selected'
                                                        },
                                                  'off' : {
                                                            'selected': ''
                                                          },
                                                        '' : new String()
                                                }
                        },
            'MSLogo': {
                            'label'          : 'sunLogo',
                            'optionValues'   : {                                                    
                                                 'on' : {
                                                    'selected': 'selected'
                                                        },
                                                  'off' : {
                                                            'selected': ''
                                                          },
                                                        '' : new String()
                                                }
                        }                           
};

功能stockInit(){警报( “BEGIN:stockInit()”); // TODO:您会收到一个“开”和“关”选项,// One将有“选择”的“选择”属性,//另将有“选择” A“”属性// //具有的“该“选择”属性的选项” //将生成未选中的复选框。 // //具有所选择的‘//将生成被检查复选框“的所选属性’选项//。
//为什么呢? 你问...因为这只是事情是//设置的方式。 对于(购物车中VAR项目){// //的console.log( “处理项目:” +项);

        var optionContainer = document.getElementById(item + "_optionContainer");

        for(var option in shoppingCart[item])
        {
            if(option != "blank")
            {
                // // console.log("option: " + option);

                var currentOption = shoppingCart[item][option]['optionValues'];

                // // console.log("currentOption['on']['selected']: " + currentOption['on']['selected']);
                // // console.log("currentOption['off']['selected']: " + currentOption['off']['selected']);

                // Really you only have to check the one, but just to be through-o
                var selected = (currentOption['on']['selected'] == 'selected') ? true : false;
                selected = (currentOption['off']['selected'] == 'selected') ? false : true;

                var label = document.createElement("LABEL");
                var labelText = document.createTextNode(shoppingCart[item][option]['label']);
                var optionInput = document.createElement("INPUT");

                var hiddenInput = document.createElement("INPUT");

                optionInput.setAttribute("type", "checkbox");
                optionInput.checked = selected;

                optionInput.setAttribute("id", option);
                alert(optionInput.id);
                alert(optionInput.checked);

                hiddenInput.setAttribute("type", "hidden");
                hiddenInput.setAttribute("name", option);
                hiddenInput.setAttribute("id", option + "_hiddenValue");
                hiddenInput.setAttribute("value", (optionInput.checked) ? "on" : "off");

                label.appendChild(optionInput);
                label.appendChild(labelText);
                label.appendChild(hiddenInput);

                (function(id)
                {
                    optionInput.onclick = function() {

                        var hiddenInput = document.getElementById(id + "_hiddenValue");

                        hiddenInput.setAttribute("value", (this.checked == true) ? "on" : "off");
                        alert("this.id: " + this.id);
                        alert("this.checked: " + this.checked);
                    }
                })(optionInput.id);

                optionContainer.appendChild(label);


            }
        }
        // // console.log("processing item of " + item + " complete");
    }
    alert("END: stockInit()");
}

请不要问我为什么这样做,让一切......我真的可以告诉你的是,我没有访问后端代码...所以我得到了我得到...

Answer 1:

我想这是你的问题

基本的解决方案是额外做到这一点:

optionInput.defaultChecked = selected;

或者可替换地设置检查参数插入复选框到DOM之后



文章来源: Checkboxes will not check in IE7 using Javascript, and yet no errors