日期:2014-05-16  浏览次数:20344 次

无法获取属性“checked”的值: 对象为 null 或未定义
function delrole() {
if (confirm("确认删除?")) {
//alert(document.getElementsByName("roleName")[0].checked);
for ( var i = 0; i <= document.getElementsByName("roleName").length; i++) {
if (document.getElementsByName("roleName")[i].checked) {
document.getElementById("flag").value = document
.getElementsByName("roleName")[i].value;
//break;
}
}
document.getElementById("selrole").submit;
}
}

js怎么总是获取不到值,请给解答下,谢谢!!

------解决方案--------------------
i <= document.getElementsByName("roleName").length
改成
i < document.getElementsByName("roleName").length
试试
------解决方案--------------------
i <= document.getElementsByName("roleName").length

->
i < document.getElementsByName("roleName").length


你的html代码是怎么写的?
------解决方案--------------------

getElementsByName方法需要的是name属性,不是id

你的roleName属性存在吗?
是这样的结果吗
<input name="roleName"
------解决方案--------------------
document.getElementsByName("roleName")[0]
必须在input上有这个name属性roleName
下面是我做的例子,测试过是没问题的
JScript code

    var handle = function(){
        
            var _r = document.getElementsByName('abc');
            for(var i=0,len=_r.length;i<len;i++){
                if(_r[i].checked){
                    alert(i+1);
                }
            }
    },
        _s = document.getElementById('btn');
    _s.onclick=function(){
        if(confirm("are you sure?")){
            handle();
        }
        
    };

------解决方案--------------------
难道你后台没生成radio或者checkbox?
------解决方案--------------------
提交的方法
document.getElementById("selrole").submit();
不是
document.getElementById("selrole").submit;

另外,要 看你的浏览器中的源代码,最终生成的是什么样子
------解决方案--------------------
除了循环有点问题,其他都能执行啊。表单也提交了

<= 改成 <
------解决方案--------------------
改成
i < document.getElementsByName("roleName").length

是没有问题的,是没有提示错误的,。

另外,既然是单选,提交之后服务器只能得到一个值,没有必要再使用
<input type="hidden" name="flag" value="" id="flag"/>
传值了。

另外,最好标准化你的表单,

<table>


<tr>

table,tr之间是不能放其他的东西的。


<form id="selrole" name="sel" action="/mtest/test/role-delRole" method="post">
<div>
<h1>角色查询</h1>
<input type="button" value="删除角色" onclick="delrole()" /> <input
type="button" value="赋予用户" name="sss" onclick="" />
</div>

移到表格外面去,

<input type="hidden" name="flag" value="" id="flag"/>
</form>

也是一样,
有些浏览器会对这些不合规定的内容进行删除的,。

参见
这个文章的总结
http://blog.csdn.net/net_lover/article/details/7162136
------解决方案--------------------
探讨

改成
i < document.getElementsByName("roleName").length

是没有问题的,是没有提示错误的,。

另外,既然是单选,提交之后服务器只能得到一个值,没有必要再使用