最后一個函數為什么運行不了呢
<!--<!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>
2016-09-14
??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');
? ? ? ? ? ? }
? ? ? ? }
2016-09-12
(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.
2016-09-11
嗯。。我盡我的能力回答吧。
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;
不知道是不是這樣,僅供參考。我也是新手。