2 回答

TA貢獻40條經驗 獲得超30個贊
1, 你的問題主要在文本框返回值的問題:文本框返回值是字符串,而不是數字,你的理解有問題。
var?j=document.getElementById("wb").value; ? ?你獲取的是一個文本框的里面的值,文本框返回的值就是字符串。
執行else并不能說明 j 是一個整數,因為在這里執行隱式類型轉化。如 "4"<7返回的也是true, 但你能說明 字符串"4" 是整數嗎?
同樣你的程序只所以能夠執行,也是隱式類型轉化, ?“4”-3 ==1 ;?字符串"4"轉化為數字,所有在做算術運算時,都要進行顯示類型轉化。parseInt(j
charAt(n)是返回字符串位于n索引的字符,"4".length 返回1, "4".charAt(0)就是返回字符"4",?
?for(var?n=0;n<j.length;n++){
????????????????????????hobby[(j.charAt(n))-1].checked=true;?
? }
j 是1-6,比如是4, 它是字符串"4",如上所述,?j.length = 1, n 只能取0,?j.charAt(n)) 就是"4".charAt(0),他返回字符"4", 此后還要隱式類型轉化,?“4”-1 = 3, 第四個閱讀 選中。
個人認為,用循環是最差的,循環要兩次,最大的問題是循環之后還要隱式類型轉化,和沒有用循環沒有區別。
?hobby[parseInt(j)-1] ?最好,當然不用也可以

TA貢獻42條經驗 獲得超16個贊
我沒怎么看明白你的表述。復制你的代碼在瀏覽器里面試了試,看到之所以沒選中的原因是報錯"hobby is not defined",也就是說hobby這個變量沒有定義,我看了一下你的聲明。? var?hobby?=?document.getElementsByTagName("input");這一句應該寫在checkall函數外面,你那樣寫這個變量的作用范圍只在checkall函數里,其它的函數是找不到這個變量的。
至于第二個問題,我只能告訴你“charAt() 方法可返回指定位置的字符?!睕]看到完整的代碼我也說不出具體的作用!
添加回答
舉報