Php 默认复选框有问题:Javascript

Php 默认复选框有问题:Javascript,php,javascript,html,ajax,checkbox,Php,Javascript,Html,Ajax,Checkbox,我创建了以下函数,用于在加载页面时检查复选框的第一个值- 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();

我创建了以下函数,用于在加载页面时检查复选框的第一个值-

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');
 }
我使用了
在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]
的使用。你有没有考虑过把它去掉

但是,也就是说,无论如何,你不应该在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 = "";
 }
$checked='checked=“true”;
while($row=mysql\u fetch\u数组($levelq)){
你也可以考虑使用列表[]而不是列表。
//在PHP中读取值要容易得多
?>

我敢打赌问题在于
[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 = "";
 }
$checked='checked=“true”;
while($row=mysql\u fetch\u数组($levelq)){
你也可以考虑使用列表[]而不是列表。
//在PHP中读取值要容易得多
?>

就像@cwallenpole所说的,您应该在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');
 }

这是因为,当只有1个复选框时,列表引用该复选框,而不是像@cwallenpole所说的那样,您应该在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');
 }

这是因为,当只有一个复选框时,列表引用该复选框,而不是复选框数组。

它会检查所有值而不是只检查第一个值吗?@Pow否。如果在循环之前查看,有
$checked=”;
,然后在循环中输出
。就在该迭代结束之前,设置为
$checked=“”;
>将使所有其他迭代都不打印任何内容,而不是checked=“true”它会检查所有的值而不是只检查第一个值吗?@Pow No。如果你在循环之前查看,有
$checked='';
,然后在循环中输出
。就在这个迭代结束之前,它被设置为
$checked=“;
>,这将使所有其他迭代都不打印任何内容而不是选中=“对”