<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<form>
请选择你爱好:<br>
<input type="checkbox" name="hobby" id="hobby1"> 音乐
<input type="checkbox" name="hobby" id="hobby2"> 登山
<input type="checkbox" name="hobby" id="hobby3"> 游泳
<input type="checkbox" name="hobby" id="hobby4"> 阅读
<input type="checkbox" name="hobby" id="hobby5"> 打球
<input type="checkbox" name="hobby" id="hobby6"> 跑步 <br>
<input type="button" value = "全选" onclick = "checkall()">
<input type="button" value = "全不选" onclick = "clearall()">
<p>请输入您要选择爱好的序号,序号为1-6:</p>
<input id="wb" name="wb" type="text" >
<input name="ok" type="button" value="确定" onclick = "checkone()">
</form>
<script type="text/javascript">
function checkall(){
var hobby = document.getElementsByTagName("input");
for(var i=0;i<hobby.length;i++){
hobby[i].checked =true;
}
}
function clearall(){
var hobby = document.getElementsByName("hobby");
for(var i=0;i<hobby.length;i++)
{
hobby[i].checked =false;
}
}
function checkone(){
chearall();
var hobby = document.getElementsByName("hobby");
var j=document.getElementById("wb").value;
for(var i=0;i<j.length;i++){
if(j.charAt(i)>6 || j.charAt(i)<1){
alert("请输入1~6之间的整数");
document.getElementById("wb").value="";
}
}
for(var n=0;n<j.length;n++){
hobby[(j.charAt(n))-1].checked=true;
}
}
</script>
</body>
</html>
1.中文乱码问题:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">可改为<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
2.alert警告框结尾的分号是中文的符号,改为alert("请输入1~6之间的整数");
3.checkone()方法中的chearall();改为clearall();
你这个代码有个bug,就是你输入的数字可以事22222,3333333,或者是3334444555,你应该控制一下j.length的值不应该大于一,也不要for循环。
function checkone(){
clearall();
var hobby = document.getElementsByName("hobby");
var j=document.getElementById("wb").value;
if(j.length>1||j>6||j<1){
alert("请输入1~6之间的整数");
document.getElementById("wb").value="";
}
else hobby[j-1].checked=true;
}
非常感谢! 问题已经解决