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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

函數內調用其他函數的時候為什么沒有執行呢?還有一些其他的問題,詳請看備注

函數內調用其他函數的時候為什么沒有執行呢?還有一些其他的問題,詳請看備注

uwenhao2008 2016-01-11 09:43:22
<!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?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(i=0;i<hobby.length;i++){ ????????????????if(hobby[i].type=="checkbox"){ ????????????????????hobby[i].checked=true; ????????????????} ????????????} ??????????//?任務1???? ????????} ????????function?clearall(){ ????????????var?hobby?=?document.getElementsByName("hobby"); ????????????for(i=0;hobby.length;i++){ ????????????????if(hobby[i].type=="checkbox"){ ????????????????????hobby[i].checked=false; ????????????????}; ???????????? ????????????} ?????????//?任務2????? ????????} ???????? ????????function?checkone(){ ????????????var?j=document.getElementById("wb").value; ????????????var?hobby?=?document.getElementsByName("hobby");//這句不能少,要不系統不知道hobby.是什么東西 ????????????if(j>6||j<0){ ????????????????alert("請確認輸入的值!")???????????????? ????????????} ????????????else{ ????????????//我這里要寫的是 ????????????//A:實現1,3這種識別方法,識別第一個和第三個選框?????????? ????????????//B:若有勾已經被選中了,則去除那個才選中別的???????????? ????????????????//clearall();//在執行輸入框選擇前先清除先前的選擇,但是一運行這句話后hobby[j-1]. ????????????????//checked=true就不起作用了,為什么? ????????????????hobby[j-1].checked=true;// ????????????????console.log(hobby[j-1]);?//這里也不顯示相關信息,不知道哪里用錯了????????????? ????????????} ?????????//?任務3 ???????? ????????} ???????? ????????</script> ????</body> </html>我想問的問題在function checkone()里都有備注,請高人幫忙理一下我的思路,自己是在找不到問題原因。謝謝
查看完整描述

3 回答

?
qq_曾譚娥_0

TA貢獻1條經驗 獲得超0個贊

<script type="text/javascript">

? ? ? ? function checkall(){

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

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

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

? ? ? ? ? ? ? ? ? ? hobby[i].checked=true;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? // 任務1 ? ?

? ? ? ? }

? ? ? ? function clearall(){

? ? ? ? ? ? var hobby=[];

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

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

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

? ? ? ? ? ? hobby.push(input[i])

? ? ? ? ? ? }

? ? ? ? ? ? }

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

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

? ? ? ? ? ? ? ? ? ? hobby[i].checked=false;

? ? ? ? ? ? ? ? };

? ? ? ? ? ? ?

? ? ? ? ? ? }

? ? ? ? ?// 任務2 ? ??

? ? ? ? }

? ? ? ? ?

? ? ? ? function checkone(){


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

? ? ? ? ? ? var input = document.getElementsByTagName("input");//這句不能少,要不系統不知道hobby.是什么東西

? ? ? ? ? ? var hobby=[];

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

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

? ? ? ? ? ? hobby.push(input[i])

? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? if(j>6||j<=0){

? ? ? ? ? ? ? ? console.log("請確認輸入的值!") ? ? ? ? ? ? ? ?

? ? ? ? ? ? }

? ? ? ? ? ? else{

? ? ? ? ? ? //我這里要寫的是

? ? ? ? ? ? //A:實現1,3這種識別方法,識別第一個和第三個選框??????????

? ? ? ? ? ? //B:若有勾已經被選中了,則去除那個才選中別的 ? ? ? ? ? ?

? ? ? ? ? ? ? ? clearall();//在執行輸入框選擇前先清除先前的選擇,但是一運行這句話后hobby[j-1].

? ? ? ? ? ? ? ? //checked=true就不起作用了,為什么?

? ? ? ? ? ? ? ? hobby[j-1].checked=true;

? ? ? ? ? ? ? ? console.log(hobby[j-1]); //這里也不顯示相關信息,不知道哪里用錯了? ? ? ? ? ? ?

? ? ? ? ? ? }

? ? ? ? ?// 任務3

? ? ? ? ?

? ? ? ? }

? ? ? ? ?

? ? ? ? </script>

獲取的input name=hobby方法不是很對

查看完整回答
反對 回復 2016-01-13
?
ppo_YXWU

TA貢獻9條經驗 獲得超1個贊

你的clearall函數里的for(i=0;hobby.length;i++){

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

然后你現在實現的識別只能單選的1-6,如果用1,3這種形式就會,因為j='1,3'出現無法識別hobby[j-1]的錯誤。

如果要多選,checkone函數要改成:

????????function?checkone(){
????????????var?j=document.getElementById("wb").value;
????????????var?hobby?=?document.getElementsByName("hobby");//這句不能少,要不系統不知道hobby.是什么東西
????????????//j得到的是1,3,4這樣的字符串
????????????if(j=='')
??????????????alert("請確認輸入的值!");
????????????else{
??????????????var?str=j.split(',');//通過分割','符號分割成數組[1,3,4]
??????????????clearall();
??????????????for(var?i=0;i<str.length;i++){
????????????????if(0<str[i]?&&?str[i]<7)
??????????????????hobby[str[i]-1].checked=true;
??????????????}
????????????}
????????}


查看完整回答
反對 回復 2016-01-11
  • uwenhao2008
    uwenhao2008
    哦,看到了。謝謝你,我粗心了,但是我有個疑問,為什么即使 clearall函數里的for(i=0;hobby.length;i++)這里我這么寫,單獨點擊 全不選 按鈕的時候 清除所有勾的選項 的操作是有作用的呢?
  • ppo_YXWU
    ppo_YXWU
    這時這個循環就會繼續,直到i=7;時hobby[7]不存在,出現hobby[i] is undefined的錯誤時才中斷js。
?
伊望歲月

TA貢獻13條經驗 獲得超1個贊

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

這句是獲取名稱為‘hobby’的對象的集合。

至于其他問題都是因為下面這段代碼錯了

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

應該為

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


查看完整回答
反對 回復 2016-01-11
  • 3 回答
  • 1 關注
  • 1727 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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