我创建了以下函数来检查加载页面时复选框的第一个值 -
function defaultCheck(){
document.checkBoxForm.list[0].checked = true;
var val=document.checkBoxForm.list[0].value;
showtotal[0] = document.checkBoxForm.list[0].value;
show(val);
editVal();
//alert('ajhsdjha');
}
我在<body onload="defaultCheck()">
加载html页面时使用了该函数。
我的问题是 - 当列表中有多个值时,默认情况下,该函数选择第一个,但当列表中只有一个值时,它不会选择它。复选框的值由 -
从数据库中动态检索 <?php
while($row=mysql_fetch_array($levelq)) {?>
<input type='checkbox' name="list" value="<?=$row['tag']?>"
id="<?=$row['tag']?>" onclick="" />
<? echo $row['tag'].' '.'<br/><br/>';
}
?>
我不知道为什么它表现得那么奇怪。有人可以帮帮我吗?
答案 0 :(得分:2)
我敢打赌,问题在于使用[0]
。你有没有考虑过删除它?
但是,那说,你不应该在JS中这样做,你应该在PHP中这样做:
$checked = 'checked="true"';
while($row=mysql_fetch_array($levelq)) {
// you also may wish to consider using list[] instead of list. That will make
// reading the value much easier in PHP
?>
<input type='checkbox' name="list" value="<?=$row['tag']?>"
id="<?=$row['tag']?>" onclick="" <?=$checked?> />
<? echo $row['tag'].' '.'<br/><br/>';
$checked = "";
}
答案 1 :(得分:1)
就像@cwallenpoole所说,你应该在PHP中这样做。
如果您仍想在JS中这样做,请转到:
function defaultCheck(){
if(document.checkBoxForm.list.length > 1) {
document.checkBoxForm.list[0].checked = true;
var val=document.checkBoxForm.list[0].value;
showtotal[0] = document.checkBoxForm.list[0].value;
} else {
document.checkBoxForm.list.checked=true;
var val=document.checkBoxForm.list.value;
showtotal[0] = document.checkBoxForm.list.value;
}
show(val);
editVal();
//alert('ajhsdjha');
}
这是因为,当只有一个复选框时,list会引用该复选框,而不是复选框数组