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