<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript"> function showHobby(){ var hobbyObj=document.hobby.userHobby; for(var i=0;i<hobbyObj.length;i++){ hobbyObj[i].checked=true; } } function showHobby2(){ var hobbyObj=document.hobby.userHobby; for(var i=0;i<hobbyObj.length;i++){ hobbyObj[i].checked=false; } } function showHobby3(){ var hobbyObj=document.hobby.userHobby; for(var i=0;i<hobbyObj.length;i++){ hobbyObj[i].checked=!hobbyObj[i].checked; } } </script> </head> <body> <form action="" name="hobby" method="get"> 足球<input type="checkbox" name="userHobby" value="zu" /> <input type="button" value="全选" onclick="showHobby()"/> <input type="button" value="不全选" onclick="showHobby2()"> <input type="button" value="反选" onclick="showHobby3()"> </form> </body> </html>
如上代码,为复选的全选全不选反选功能,当只有一个复选时三个功能都失效了
但将获取对象的代码var hobbyObj=document.hobby.userHobby;更换为
var hobbyObj=document.getElementsByName("userHobby");时,单个复选还可以用着三个功能,为什么呢?
当checkbox多个时document.hobby.userHobby和document.getElementsByName("userHobby") 返回的都是一个包含checkbox控件的数组,所以都存在length属性
但当checkbox只有一个的时候,document.hobby.userHobby返回的是不是数组,而是直接对应的那个控件,所以不存在length属性
[code="java"]
function selectAll()
{
var check_item = document.hobby.userHobby;
if(check_item)
{
if(typeof(check_item.length) == "undefined")
{
check_item.checked = "true";
}
else
{
for(i=0;i<check_item.length;i++)
{
check_item[i].checked = "true";
}
}
}
}
[/code]