为了账号安全,请及时绑定邮箱和手机立即绑定

各位大佬,我这第三题的写法规范吗?感觉好奇怪啊,判断包循环,再包判断

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<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 type="text" name="wb" id="wb" />
	    <input type="button" name="ok" value="确定" onclick="checkone();" />
	    <input type="reset" name="rs" value="重置" onclick="reset();" />
	    <p>(只有负数无法判断,报错)</p>
    </form>
    <script type="text/javascript">
        //任务一
        function checkall(){
            var hobby = document.getElementsByTagName('input');
            for(var i=0; i<hobby.length; i++){
                if(hobby[i].name == 'hobby'){
                    hobby[i].checked = true;
                }
            }
        }
        //任务二
        function clearall(){
            var hobby = document.getElementsByName('hobby');
            for(var i = 0; i < hobby.length; i++){
                if(hobby[i].type == 'checkbox'){
                    hobby[i].checked = false;
                }
            }
        }
        
        //任务三
        function checkone(){
            clearall();
            var hobby = document.getElementsByName('hobby');
            var j=document.getElementById('wb').value;
            if(isNaN(j)||j.replace(/(^\s*)|(\s*$)/g,"")==''){
                alert("非数字,请重输!");
                document.getElementById("wb").value="";
            }
            else{
                for(var i=0;i<j.length;i++){
                    if(j.charAt(i)<1||j.charAt(i)>6){
                        alert("无此项,请重输!");
                        document.getElementById("wb").value="";
                        break;
                    }
                    else{
                        hobby[(j.charAt(i))-1].checked = true;
                    }
                }
            }
        }
    </script>
</body>
</html>


正在回答

5 回答

function checkall(){

            var hobby = document.getElementsByTagName("input");

           for(var i = 0; i < hobby.length; i++){

               if(hobby[i].name == "hobby"){

                   hobby[i].checked = true;

               }

           }

        }

        function clearall(){

            var hobby = document.getElementsByName("hobby");

            for(var i = 0; i < hobby.length; i++){

                if(hobby[i].name == "hobby"){

                    hobby[i].checked = false;

                }

           }

        }

        function checkone(){

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

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

            if(hobby){

                hobby.checked = true;

            }else{

                alert("没有改选项");

            }

        }


0 回复 有任何疑惑可以回复我~

function checkall(){

            var hobby = document.getElementsByTagName("input");

           

      // 任务1 

       for(var i=0;i<hobby.length;i++){

           if(hobby[i].hasAttribute("name")){

               hobby[i].checked=true;

           }

       }

       

        }

        function clearall(){

            var hobby = document.getElementsByName("hobby");

        

        // 任务2    

       for(var i=0;i<hobby.length;i++){

           if(hobby[i].hasAttribute("name")){

               hobby[i].checked=false;

           }

       }

        }

        

        function checkone(){

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

        

         // 任务3

        document.getElementsByName("hobby")[parseInt(j)-1].checked=true;

        }


0 回复 有任何疑惑可以回复我~
#1

走馬勿观花 提问者

不行呀,我想做的是输入数字,然后获取相应的值来传递给复选框选上。单选倒没什么,我的是多选。然后我写的,还无法判断负数,或是判断失效。
2020-03-29 回复 有任何疑惑可以回复我~

我自己琢磨着解决报错了!!!全方面判断!无报错!!只是不知道规不规范


<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<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 type="text" name="wb" id="wb" />

<input type="button" name="ok" value="确定" onclick="checkone();" />

<input type="reset" name="rs" value="重置" onclick="reset();" />

</form>

<script type="text/javascript">

function checkall(){

var hobby = document.getElementsByTagName('input');

for(var i=0; i<hobby.length; i++){

// hobby[i].type == 'checkbox'

if(hobby[i].name == 'hobby'){

//hobby[i].checked = 'checked';

hobby[i].checked = true;

}

}

}


function clearall(){

var hobby = document.getElementsByName('hobby');

for(var i=0; i<hobby.length; i++){

if(hobby[i].type == 'checkbox'){

hobby[i].checked = false;

}

}

}


function checkone(){

clearall();

var hobby = document.getElementsByName('hobby');

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

if(j == ''){

alert('值不为空!');

}

else if(j < 0){

alert('值不为负!');

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

return;

}

for(var i=0; i<j.length; i++){

if(isNaN(j)||j.replace(/(^\s*)|(\s*$)/g,"")==''){

alert("非数字,请重输!");

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

break;

}

else if(j.charAt(i)<1||j.charAt(i)>6){

alert("无此项,请重输!");

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

break;

}

else{

hobby[(j.charAt(i))-1].checked = true;

}

}

}

</script>

</body>

</html>


1 回复 有任何疑惑可以回复我~
function checkone(){
    clearall();
    var hobby = document.getElementsByName('hobby');
    var j=document.getElementById('wb').value;
    for(var i=0; i<j.length; i++){
        if(isNaN(j)||j.replace(/(^\s*)|(\s*$)/g,"")==""){
            alert("非数字,请重输!");
            document.getElementById("wb").value="";
            break;
        }
        else if(j.charAt(i)<1||j.charAt(i)>6){
            alert("无此项,请重输!");
            document.getElementById("wb").value="";
            break;
        }
        else{
            hobby[(j.charAt(i))-1].checked = true;
        }
    }


0 回复 有任何疑惑可以回复我~

第三题我最后修改如下:

function checkone(){			clearall();			var hobby = document.getElementsByName('hobby');			var j=document.getElementById('wb').value;			for(var i=0; i<j.length; i++){				if(isNaN(j)||j.replace(/(^\s*)|(\s*$)/g,"")==""){					alert("非数字,请重输!");					document.getElementById("wb").value="";					break;				}				else if(j.charAt(i)<1||j.charAt(i)>6){					alert("无此项,请重输!");					document.getElementById("wb").value="";					break;				}				else{						hobby[(j.charAt(i))-1].checked = true;					}			}

可这样无法判断空值怎么破

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

各位大佬,我这第三题的写法规范吗?感觉好奇怪啊,判断包循环,再包判断

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信