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() 方法可返回指定位置的字符。”没看到完整的代码我也说不出具体的作用!
添加回答
举报