1

我对 IE8 和 jQuery 1.9.1 有点问题。

目标浏览器是IE8。当我尝试提醒 rolevalue 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;
}
4

1 回答 1

4

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

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

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

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

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

希望有帮助。

于 2013-08-26T19:49:43.613 回答