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

请教下复选框的问题


<input type="checkbox" name="chkpart3" value="chkpart3" onclick="chkpart('cityname3')">
<input type="checkbox" name="cityname3" value="701">北京;
<input type="checkbox" name="cityname3" value="763">上海;



function chkpart(mname)
{
var e = document.getElementById(mname);
e.checked =!e.checked;
}

问题是我点击后,只有一个复选框被勾中或取消,这是什么原因,郁闷。

------解决方案--------------------
        function chkpart(mname){
            var e = document.getElementsByName(name);
            for(var i=0;i< e.length;i++){
                e[i]=!e[i].checked;
            }
        }

------解决方案--------------------
document.getElementById(mname);
只能获取第一个id为mname的dome对象,当取到对象时即刻返回,不再对下面的dom进行检索。
------解决方案--------------------
getElementById 浏览器都假设页面id是唯一的,所以只返回第一个的,而且只有ie可以name和 id混用(不规范)。
改用getElementsByName 这个ie会找所有id和name等于指定值的element,firefox等只会找到name为指定值的对象。


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<input type="checkbox" name="chkpart3" value="chkpart3" onclick="chkpart('cityname3')">
<input type="checkbox" name="cityname3" value="701">北京;
<input type="checkbox" name="cityname3" value="763">上海;

<script type="text/javascript">
<!--


function chkpart(mname){
var es = document.getElementsByName(mname);
for(var i=0;i<es.length;i++){
es[i].checked = !es[i].checked;
}
}
//-->
</script>