问答详情
源自:9-4 区别getElementByID,getElementsByName,getElementsByTagName

任务一、任务二i<hobby.length,而任务三i<=hobby.length,为什么;hobby[i].checked怎么理解;任务三中的代码怎么理解?

<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(){
			  var j=document.getElementById("wb").value;
			  var hobby=document.getElementsByName("hobby");
			  var num=j.split("");
			  for(var i=0;i<hobby.length;i++){
				  hobby[num[i]-1].checked=true;
				  }
			  }  //任务三
			  function clearone(){
			  var j=document.getElementById("wb").value;
			  var hobby=document.getElementsByName("hobby");
			  var num=j.split("");
			  for(var i=0;i<hobby.length;i++){
				  hobby[num[i]-1].checked=false;
				  }
			  } 
</script>


提问者:MMJiao 2016-12-04 16:41

个回答

  • 进击君
    2016-12-07 18:50:05
    已采纳

    function clearone(){   //函数名意思大概是  清除选中的check
        var j=document.getElementById("wb").value;  //取出输入框中的值并且赋值给j,j是字符串
        var hobby=document.getElementsByName("hobby"); //取出所有的复选框,存入类数组hobby
        //这个代码假设用户输入了一个或以上的数字,中间用空格隔开,比如:2 5 6
        var num=j.split("");   //因此去掉j之间的空格,把结果存入num,num是数组
        for(var i=0;i<hobby.length;i++){ //遍历num数组,hobby中第一是o,最后一个是length-1,i是num的序数,num数组的序数不可能大于hobby数组的长度。
        hobby[num[i]-1].checked=false; //num中存的是用户的输入,从1开始,转换为数组元素要-1
                      }

    假设,用户输入的是 2 5 6

    num=256

    for循环中,第一次:

    hobby[num[0]-1]  等价于hobby[2-1]等价于 hobby[1].用户的意思就是第二个复选框,因此输入2,转换成数组hobby中就是hobby[1]。把这个复选框设置为未选中状态

    for循环三次,同上。


  • 杂酱面包
    2016-12-05 22:42:36



             // 任务3

    function checkone(){

                var j=document.getElementById("wb").value;

             if(j>=1&&j<=6){

            var hobby=document.getElementById("hobby"+j);

            hobby.checked=true;}

            else

            document.write("please input again");

            }