亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

最后一個函數為什么運行不了呢

<!--<!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>

正在回答

3 回答

??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');

? ? ? ? ? ? }

? ? ? ? }


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

慕數據9493197 提問者

謝謝 謝謝你的解答 不過還是不太明白這里是什么意思 var hobbyId = 'hobby'+j; var theOne = document.getElementById(hobbyId); 原諒我是新手菜鳥/捂臉
2016-09-14 回復 有任何疑惑可以回復我~

(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.

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

慕數據9493197 提問者

謝謝你 現在懂了 可是為什么最后一個函數運行不了呢 你能幫我看看嗎 謝謝
2016-09-12 回復 有任何疑惑可以回復我~
#2

xiaowan2064178456

那這樣實現的了嗎 加入輸入的數字是11的話 不會彈出警告框啊
2016-10-14 回復 有任何疑惑可以回復我~

嗯。。我盡我的能力回答吧。

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;


不知道是不是這樣,僅供參考。我也是新手。

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

慕數據9493197 提問者

謝謝你 不好意思昨天忘記把代碼貼上去了 你的理解是對的 但是 后面這里還是不太理解 你能在幫我看看嗎 謝謝你 for(var n=0;n<j.length;n++){ hobby[(j.charAt(n))-1].checked=true;
2016-09-11 回復 有任何疑惑可以回復我~
#2

銀白的天空 回復 慕數據9493197 提問者

我的理解,j應該是一個數值,而不是一個字符串。但這里j.charAt(n)里,是返回“j字符串中某個位置的字符”,所以這里我也理解不了。。。。
2016-09-11 回復 有任何疑惑可以回復我~
#3

慕數據9493197 提問者 回復 銀白的天空

嗯嗯 謝謝啊 就是最后一步哪里不太懂
2016-09-11 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

最后一個函數為什么運行不了呢

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號