js赋值的问题

shenxian5 2009-09-23 02:41:48

<form name="form1" id="form1">
<input type="checkbox" value="1" name="num"><br>
<input type="checkbox" value="2" name="num"><br>
<input type="checkbox" value="3" name="num"><br>
……
<input type="checkbox" value="17" name="num"><br>
<input type="checkbox" value="18" name="num"><br>
<input type="checkbox" value="19" name="num"><br>
<input type="checkbox" value="20" name="num"><br>

……

</form>



var str = "17, 18, 19, 20";
var chk = document.getElementsByName("num");
for(var i = 0 ;i<chk.length;i++)
{
if(str.indexOf(chk[i].value)>-1)
{
chk[i].checked = true;
}
}




要求是js自动将数据库中已经存在的数字,对应form中的checkbox,有的就自动勾选

但是为什么始终会将前面的name=1和2的几个checkbox勾选了呢?
...全文
67 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
RyanDream 2009-09-23
  • 打赏
  • 举报
回复
。。。。。。因为在你的str里面有1,2这两个数字出现嘛,你把str.indexOf(chk[i].value)改成str.indexOf(chk[i].value+",")这样就行了
shenxian5 2009-09-23
  • 打赏
  • 举报
回复
果然是这样
非常感谢ls各位兄弟解答!
BeenZ 2009-09-23
  • 打赏
  • 举报
回复
因为包含了1(对应17 18 19) 和 2(对应20)
changyun_yizhao 2009-09-23
  • 打赏
  • 举报
回复
str.indexOf(chk[i].value)>-1

你这么判断的话value里面含有1、2、7、8、9、0的都会被选中
hookee 2009-09-23
  • 打赏
  • 举报
回复

<script>
window.onload=function(){
var str = "17, 18, 19, 20";
str = str.replace(/\s/g,"");
str = "," + str + ",";
var chk = document.getElementsByName("num");
for(var i = 0 ;i<chk.length;i++)
{
if(str.indexOf("," + chk[i].value + ",")>-1)
{
chk[i].checked = true;
}
}

}
</script>

<form name="form1" id="form1">
<input type="checkbox" value="1" name="num"><br>
<input type="checkbox" value="2" name="num"><br>
<input type="checkbox" value="3" name="num"><br>
……
<input type="checkbox" value="17" name="num"><br>
<input type="checkbox" value="18" name="num"><br>
<input type="checkbox" value="19" name="num"><br>
<input type="checkbox" value="20" name="num"><br>

……

</form>

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧