<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<titlntsByName,getElementsBe>无标题文档</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");
// 任务1
for(var i=0;i<hobby.length;i++)
{
if(hobby[i].type == "checkbox")
{
hobby[i].checked = true;
}
}
}
function clearall(){
var hobby = document.getElementsByName("hobby");
// 任务2
for(var i=0;i<hobby.length;i++)
{
hobby[i].checked = false;
}
}
function checkone(){
var j=document.getElementById("wb").value;
// 任务3
var hobby = document.getElementById("hobby"+j)//要提问的部分;
hobby.checked = true;
}
</script>
</body>
</html>
题目任务1.在第27行处补充完整,实现当点击"全选"按钮时,将选中所有的复选项。
提示:document.getElementsByTagName("input")获取的是所有input标签,包括复选项和按钮,所以要判断是否是复选项,如是选中。
2.在第33行处补充完整,实现当点击"全不选"按钮时,将取消所有选中的复选项。
3.在第40行处补充完整,在文本框中输入输入1-6数值,当点击"确定"按钮时,根据输入的数值,通过id选中相应的复选项。
问题:1.代码中hobby+j hobby代表的是一个数组 而j是输入的数字,那hobby+j代表啥啊?
2.把任务三写成hobby[j-1].checked=true;为什么不行啊?
var hobby = document.getElementById("hobby"+j)//要提问的部分;
hobby.checked = true;
首先 j代表的是 文本框输入的内容 数字 1-6
变量hobby 表示的是获取 id为hobby1-6的元素
“hobby”是字符串 "hobby"+j 的意思是hobby后面紧跟着的内容是j
当j=1 是 他表示的是 字符串 “hobby1” 和上面的id相对应
hobby是一个数组,j是文本框的value,所以,hobby+j毫无意义。
其次,你把hobby加上引号,"hobby"它就不再是数组,而是字符串.再一个你把hobby[j-1].checked=true中的j用转成整形试一试。这是我的代码,希望对你有所帮助
function checkone(){
var j=document.getElementById("wb").value;
var hobby=document.getElementsByName("hobby");
for(var i=0;i<hobby.length;i++){
hobby[i].checked=false;
if(hobby[i].id.indexOf(j)>-1){
hobby[i].checked=true;
}
}
注意hobby与"hobby"区别,hobby是Id为("hobby"+j)的对象,"hobby"是个字符串,"hobby"+j 还是个字符串
注意getElementById与getElementsByName的区别,前者获得一个对象,后者获得对象的集合,也就是你说的数组的表现,如果hobby=document.getElementsByName("hobby"),hobby[j-1].checked=true;就对了