Javascript无法在IE8中运行,不知道为什么

时间:2013-10-29 20:11:59

标签: javascript jquery

我有这个代码。我为它凌乱而道歉。我是一个新手,因此问题。它应该从查询字符串填充复选框。它适用于Chrome,Safari,Firefox。刚开始在IE上测试,在IE 8中它不起作用。点击已注册,但复选框不会填充。没有错误被抛出,似乎只是忽略它。

//set var for queryString - "?"
            var queryString = window.location.search.substring(1);

            var parameters = queryString.split('&');

            var paramObject = new Object();

            for( var i =0; i < parameters.length; ++i){
                var equalsPos = parameters[i].indexOf('=');
                var key = decodeURIComponent(parameters[i].substring(0,equalsPos));

                var stringLength = parameters[i].length;

                var value = decodeURIComponent(parameters[i].substring(equalsPos + 1, stringLength).replace(/\+/g,' '));

                if(!paramObject[key]) {
                    //console.log('paramObject[key] =' + paramObject[key]);
                    paramObject[key] = value;
                    //console.log('paramObject[key] = value = ' + value + paramObject[key]);
                    //console.log(paramObject[key]);
                }else if(paramObject[key] instanceof Array){
                    paramObject[key].push(value);
                    //console.log(paramObject[key]);
                } else {
                    var newArray = [];
                    var existingValue = paramObject[key];
                    //console.log('existing value: '+ existingValue);
                    //console.log('value: ' + value);
                    newArray.push(existingValue);
                    newArray.push(value);
                    paramObject[key] = newArray;
                }

            } 

            //console.log(paramObject);


            for (key in paramObject) {

                $('input[name="' + key + '"]').each(function(){
                    var obj = paramObject[key];

                    for(prop in obj){

                        if(obj instanceof Array){

                            if(obj.hasOwnProperty(prop)){
                                //console.log(key + '=' + obj[prop]);
                                if($(this).attr('value') == obj[prop]){
                                    $(this).attr('checked','checked');                      
                                }
                            }
                        }else{
                            if(obj.hasOwnProperty(prop)){
                                if($(this).attr('value') == obj){
                                    $(this).attr('checked','checked');                      
                                }
                            }
                        }
                    }
                });
            }

1 个答案:

答案 0 :(得分:3)

回答here IE8不支持主机对象上的hasOwnProperty()方法。那里有一个评论,你正在寻找答案。祝你好运!