慕数据9493197
2016-09-10 22:57
<!--<!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;-->
<!--}-->
<!--// 任务1-->
<!--}-->
<!--function clearall(){-->
<!--var hobby = document.getElementsByName("hobby");-->
<!--//alert(hobby.length);-->
<!--for(var i=0;i<hobby.length;i++){-->
<!--hobby[i].checked=false;-->
<!--}-->
<!--// 任务2-->
<!--}-->
<!--function checkone(){-->
<!--clearall();-->
<!--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("越界,请重新输入!");-->
<!--document.getElementById("wb").value="";-->
<!--}-->
<!--}-->
<!--for(var n=0;n<j.length;n++){-->
<!--hobby[(j.charAt(n))-1].checked=true;-->
<!--}-->
<!--}-->
<!--</script>-->
<!--</body>-->
<!--</html>-->
<!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;
}
// 任务1
}
function clearall(){
var hobby = document.getElementsByName("hobby");
for(var i=0;i<hobby.length;i++){
hobby[i].checked=false;
}
// 任务2
}
function checkone(){
//任务三
var hobby=document.getElementsByName("hobby");
var j=document.getElementById("wb").value;
for (var i=0;i<j.length;j++){
if (j.charAt(i)>6||(j.charAt(i)<1)){
alert("越界 请输入");
document.getElementById("wb").value="";
}
}
for (var n=0;n<j.length;n++){
hobby[(j.charAt(n))-1].checked=true;
}
}
</script>
</body>
</html>
function checkone(){
//获取到name='hobby'的对象数组,长度为6
var hobby=document.getElementsByName("hobby");
//获取到ID为wb的对象的值 就是你在地址中输入的值
var j=document.getElementById("wb").value;
//判断j值是否合法
if (j>6||j<1){
alert("越界 请输入");
document.getElementById("wb").value="";
}else{
//获取j对应的对象数组的下标
var k = j-1;
hobby[k].checked = true;
}
}
很不幸 你的j.length 是从头错到尾巴的,j本身只是一个字符串,你的length只能获取到j本身这个字符串的长度,
如果你输入的是300,j就是300,j的长度就是3; 你循环的毫无意义。
更加优雅的代码如下
function checkone(){
var j=document.getElementById("wb").value;
if(j>0&&j<7){
var hobbyId = 'hobby'+j;
var theOne = document.getElementById(hobbyId);
theOne.checked = true;
}else{
alert('please input the right number');
}
}
(1) if(j.charAt(i)>6 || j.charAt(i)<1){} //这里应该是输入的一段字符串,比如123。然后用字符串的下标,循环从0开始遍历,返回来单个字符串。只要这个字符是1和6之间就不会弹出越界框框。
(2) for(var n=0;n<j.length;n++){
hobby[(j.charAt(n))-1].checked=true;} // 这里charAt(n)返回的单个字符,然后减1是这个字符的下标,比如123字符串中的1字符下标是0.
嗯。。我尽我的能力回答吧。
clearall();//没有找到相关明确的意思
var hobby = document.getElementsByName("hobby");//通过“hobby”来获取元素,并返回包含所有“hobby”名字的元素的数组
var j=document.getElementById("wb").value;//获取id为wb文本框的值
for(var i=0;i<j.length;i++){
if(j.charAt(i)>6 || j.charAt(i)<1){//charat()函数用于返回指定位置的字符,所以这里没弄明白是怎么回事。因为根据上下文,j的值很有可能只是一个数字,而不是一个字符串。我认为这里应该是让用户输入一个1——6的数字,如果这个数字超过了1-6的范围,那么则提示越界,需要用户重新输入
alert("越界,请重新输入!");
document.getElementById("wb").value="";//反之,获取wb文本框中的值
}
}
for(var n=0;n<j.length;n++){
hobby[(j.charAt(n))-1].checked=true;
不知道是不是这样,仅供参考。我也是新手。
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题
回答 1
回答 2
回答 2
回答 2
回答 1