首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

JS复选框默认选择数据库中的值,该如何解决

2012-03-21 
JS复选框默认选择数据库中的值html xmlnshttp://www.w3.org/1999/xhtml head runatservertitle

JS复选框默认选择数据库中的值
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>无标题页</title>
<script language="JavaScript" type="text/javascript">

var B="D_D,D_M";


for (i=0;i<cbItem.length ;i++ )
{
  tmpB=B.split(", ");
  for (j=0;j<tmpB.length ;j++ )
  {
  if(tmpB[j]==cbItem[i].value)
  {cbItem[i].checked=true;break;}
  }
}



</script>
</head>
<body>
<form id="form1" >
  <div>
  <input id="" class="cbItem" name="cbItem" type="checkbox" value="D_A"/>添加&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  <input id="" class="cbItem" name="cbItem" type="checkbox" value="D_D"/>删除&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  <input id="" class="cbItem" name="cbItem" type="checkbox" value="D_M"/>编辑
  </div>
  </form>
</body>
<html>
这样写了,页面没反应,没执行

[解决办法]
有个三个问题:
1,你想要页面执行这个方法,但是没有显示的调用去触发。可以写在window.onload方法中
2. 明白你想要取到checkbox的集合,但是不能直接用name来取,用document.getElementsByName("cbItem")可以得到checkbox对象的数组
3.你要split的字符串("D_D,D_M")里面逗号后面没有空格,因此split的条件中也不能有空格了,这样才能split对

可以试试这段,应该是可以的。

[code=HTML][/code]<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>

<script language="JavaScript" type="text/javascript">
window.onload = function() { // 1. 触发方法 
var B = "D_D,D_M";

var cbItem = document.getElementsByName("cbItem"); // 2. 找到对象

for (i = 0; i < cbItem.length; i++) {
tmpB = B.split(","); // 3. 逗号后面别跟着空格,否则没法正确spilt
for (j = 0; j < tmpB.length; j++) {
if (tmpB[j] == cbItem[i].value)
{ cbItem[i].checked = true; break; }
}
}

}

</script>

</head>
<body>
<form id="form1">
<div>
<input id="" class="cbItem" name="cbItem" type="checkbox" value="D_A" />添加&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input id="" class="cbItem" name="cbItem" type="checkbox" value="D_D" />删除&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input id="" class="cbItem" name="cbItem" type="checkbox" value="D_M" />编辑
</div>
</form>
</body>
<html>

[解决办法]
因为你写的var B = "D_D,D_M"中逗号后面没有空格,所有B.split(",")的时候,括号中逗号后面也不能有空格,否则就没法split成两个字符串了。仔细看看你最开始的code,是有空格的。
[解决办法]
document有forms这个属行,想通过id找到相应的form以及其中的元素的话的话,应该这么用:
var checkobj = document.forms("form1").all("a")

另外
if(checkobj[i].value==tmpB)
{...}
tmpB是split之后返回的数组,因此比较时应该用其中的元素:tmpB[j]

这样改下应该就行了。
[解决办法]
想要通过form的id找到form和其中的元素的话,应该这么用:
var checkobj = document.forms("form1").all("a");



另外if(checkobj[i].value==tmpB)中tmpB是split返回的数组,应该用其中的元素tmpB[j]来比较,如下
if(checkobj[i].value==tmpB[j])
{
checkobj[i].checked=true;
}

这样应该就行了。
[解决办法]
想要用form的id从document中找到form和其中的元素的话,应该这么用:
var checkobj = document.forms("form1").all("a");

另外tmpB是spilt返回的数组,比较的时候应该用tmpB[j],改正这样:
if (checkobj[i].value == tmpB[j]) {
heckobj[i].checked = true;
}

这样改完应该就行了。
[解决办法]
用这个试试

 window.onload = function() {
var B = "D_D,D_M";

var cbItem = document.getElementsByName("cbItem");
alert(cbItem.length);
for (i = 0; i < cbItem.length; i++) {
tmpB = B.split(",");
for (j = 0; j < tmpB.length; j++) {
alert(tmpB[j]);
if (tmpB[j] == cbItem[i].value)
{ cbItem[i].checked = true; break; }
}
}
}

热点排行