IE8 javascript/jQuery中未定义的var

Undefined var in IE8 javascript/jQuery

本文关键字:未定义 var jQuery javascript IE8      更新时间:2023-09-26

IE8和jQuery 1.9.1有点问题。

目标浏览器是IE8。当我试图提醒角色值var.时,我得到了一个未定义的变量

这是代码:

function get_role(){
    var test = document.getElementsByName("admin_role");
    for(var elem in test){
        if(test[elem].checked){
            var rolevalue = test[elem].value;
            $.post('<?php echo base_url(); ?>ajaxsc/getrole/',{role:rolevalue},function(result){
                $('#roletest').html(result);
                });
        }
    }
    **alert('role = ' + rolevalue);**
    return rolevalue;
}

问题是for..in循环正在迭代一些不需要的项。

如果使用for..in循环,则需要注意这一点;您可能会在对象属性上迭代循环,这些属性是对象原型的一部分,而不是您想要迭代的实际元素。

发生的情况是,它在循环中碰到了一个不是DOM元素的属性,当然,这意味着它没有.value,所以当你试图从.value设置变量时,你会得到undefined

为了避免这种情况,您需要使用.hasOwnProperty()方法来确定循环是否在迭代原型方法,并避免它们。你需要做这样的事情:

for (var i in obj) {
    if (obj.hasOwnProperty(i)) {
        .....
    }
}

希望能有所帮助。