weixin_慕先生4035002
2020-09-08 12:18
<!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"> 1.音乐
<input type="checkbox" name="hobby" id="hobby2"> 2.登山
<input type="checkbox" name="hobby" id="hobby3"> 3.游泳
<input type="checkbox" name="hobby" id="hobby4"> 4.阅读
<input type="checkbox" name="hobby" id="hobby5"> 5.打球
<input type="checkbox" name="hobby" id="hobby6"> 6.跑步 <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")&&document.getElementsByName("hobby");
for ( i =0; i<hobby.length; i++){
hobby[i].checked = true;
}
}
function clearall(){
var hobby = document.getElementsByName("hobby");
for (i=0; i<hobby.length;i++){
hobby[i].checked= false;
}
// 任务2
}
function checkone(){
var hobby = document.getElementsByName("hobby");
var j=document.getElementById("wb").value;
//switch和if差不多但是switch更加简洁 但是都比较繁琐, 太多选项就不能用了
switch(j){
case '1' : hobby[0].checked= true;
break;
case '2' : hobby[1].checked= true;
break;
case '3' : hobby[2].checked= true;
break;
case '4' : hobby[3].checked= true;
break;
case '5' : hobby[4].checked= true;
break;
case '6' : hobby[5].checked= true;
break;
default:alert('only have 6 options')
}
}
//用循环做 暂时感觉最好的办法
/* function checkone(){
clearall();
var hobby = document.getElementsByName("hobby");
var j=document.getElementById("wb").value;
for(var i=0;i<j.length;i++){
hobby[(j.charAt(i))-1].checked=true;
if( j<1||j>6 ){
alert('over limit')
}
}
}*/
//用ID方法做 这种方法局限性比较大而且不够智能
/* function checkone(){
clearall();
var j=document.getElementById("wb").value;
var hobby = document.getElementById("hobby"+j);
if (j<1||j>6){
alert('over limit')
}
hobby.checked = true;
}*/
</script>
</body>
</html>
为啥要用for循环啊 不用也是可以实现啊
var j=document.getElementById("wb").value;
var hobby = document.getElementsByName("hobby");
for (let i=0; i< hobby.length; i++) {
if(i == j-1) {
hobby[i].checked = "checked"
}
}
hobby本身是个数组,只要选中的数字-1等于数组下标就找到了那个hobby,完事
大家一起来分享一下其他方法吧
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题