js進階9.4中的問題
<!DOCTYPE HTML>
<html>
? ? <head>
? ? ? ? <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
? ? ? ? <titlntsByName,getElementsBe>無標題文檔</title>
? ? </head>
? ??
? ? <body>
? ? ? ? <form>
? ? ?
? ? ?請選擇你愛好:<br>
? ? ? ? ? <input type="checkbox" name="hobby" id="hobby1"> ?1音樂
? ? ? ? ? <input type="checkbox" name="hobby" id="hobby2"> ?2登山
? ? ? ? ? <input type="checkbox" name="hobby" id="hobby3"> ?3游泳
? ? ? ? ? <input type="checkbox" name="hobby" id="hobby4"> ?4閱讀
? ? ? ? ? <input type="checkbox" name="hobby" id="hobby5"> ?5打球
? ? ? ? ? <input type="checkbox" name="hobby" id="hobby6"> ?6跑步 <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");
? ? ? ? ??
? ? ? ? ? // 任務1?
? ? ? ? for(var i=0;i<hobby.length;i++)
? ? ? ? {
? ? ? ? ?if(hobby[i].type == "checkbox")
? ? ? ? ?{
? ? ? ? ? ? hobby[i].checked = true;
? ? ? ? ?}
? ? ? ? }
?
? ? ? ? }
? ? ? ? function clearall(){
? ? ? ? ? ? var hobby = document.getElementsByName("hobby");
? ? ? ? ? ??
? ? ? ? ?// 任務2 ? ?
? ? ? ? ? for(var i=0;i<hobby.length;i++)
? ? ? ? ? {
? ? ? ? ? ? ?hobby[i].checked = false;
? ? ? ? ? }
? ? ? ? }
? ? ? ??
? ? ? ? function checkone(){
? ? ? ? ? ? var j=document.getElementById("wb").value;
? ? ? ? ?// 任務3
? ? ? ? ? ? var hobby = document.getElementById("hobby"+j)//要提問的部分;
? ? ? ? ? ? hobby.checked = true;
? ? ? ? }
? ? ? ??
? ? ? ? </script>
? ? </body>
</html>
題目任務1.在第27行處補充完整,實現當點擊"全選"按鈕時,將選中所有的復選項。
提示:document.getElementsByTagName("input")獲取的是所有input標簽,包括復選項和按鈕,所以要判斷是否是復選項,如是選中。
2.在第33行處補充完整,實現當點擊"全不選"按鈕時,將取消所有選中的復選項。
3.在第40行處補充完整,在文本框中輸入輸入1-6數值,當點擊"確定"按鈕時,根據輸入的數值,通過id選中相應的復選項。
問題:1.代碼中hobby+j hobby代表的是一個數組 而j是輸入的數字,那hobby+j代表啥???
? ? ? ?2.把任務三寫成hobby[j-1].checked=true;為什么不行???
2016-04-28
?var hobby = document.getElementById("hobby"+j)//要提問的部分;
? ? ? ? ? ? hobby.checked = true;
首先 ?j代表的是 ?文本框輸入的內容 ?數字 1-6
變量hobby ?表示的是獲取 id為hobby1-6的元素?
“hobby”是字符串 ??"hobby"+j ?的意思是hobby后面緊跟著的內容是j ??
當j=1 是 ? ?他表示的是 ?字符串 “hobby1” ?和上面的id相對應
2016-04-28
hobby是一個數組,j是文本框的value,所以,hobby+j毫無意義。
其次,你把hobby加上引號,"hobby"它就不再是數組,而是字符串.再一個你把hobby[j-1].checked=true中的j用轉成整形試一試。這是我的代碼,希望對你有所幫助
function checkone(){
? ? ? ? ? ? var j=document.getElementById("wb").value;
? ? ? ? ? ? var hobby=document.getElementsByName("hobby");
? ? ? ? ? ? for(var i=0;i<hobby.length;i++){
? ? ? ? ? ? ? ? hobby[i].checked=false;
? ? ? ? ? ? ? ? if(hobby[i].id.indexOf(j)>-1){
? ? ? ? ? ? ? ? ? ? hobby[i].checked=true;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
2016-04-28
注意hobby與"hobby"區別,hobby是Id為("hobby"+j)的對象,"hobby"是個字符串,"hobby"+j ?還是個字符串
注意getElementById與getElementsByName的區別,前者獲得一個對象,后者獲得對象的集合,也就是你說的數組的表現,如果hobby=document.getElementsByName("hobby"),hobby[j-1].checked=true;就對了