1

当复选框数组中只有一个元素时,document.friendform1.friends[i].checked 不起作用。如果复选框数组中有多个元素,则它工作正常

我的 html 和 php 代码是

 $x=0;
foreach($result as $row)
{
    if($x==0)
    {?>
        <div class="invite-friends-con">
    <?php 
    }else{?>
        <div class="invite-friends-con" style="margin-left:70px;">
    <?php 
    }?>
    <div class="invite-friends-con-img">
       <img src="<?php echo base_url();?>Profile_images/<?php echo $row->vchPicture?>" width="48" height="39" align="absmiddle" />
    </div>
    <span><?php echo $row->vchFirstName?></span><input type="checkbox" name="friends[]"  style="margin-top:10px" value="<?php if($row->intFriendID==$this->session->userdata('user_id')){ echo $row->intMemberID;}else{ echo $row->intFriendID;}?>" id="friends"  />
    <input type="hidden" name="frnd[]" id="frnd" value="<?php echo $row->vchFirstName?>" />
    <?php if($x==1){$x=0;}else{$x++;}?>
<?php 
} ?>

和javascript代码是:

 function addalfriend()
 {
   var str='';
   var str1='';

    var len=document.friendform1.friends.length;
    for(i=0;i<len;i++)
    {
      if(document.friendform1.friends[i].checked==true)
       {
         if(str=='')
         {
           str=document.friendform1.friends[i].value;
           str1=document.friendform1.frnd[i].value;
         }
         else
         {
           str=str+","+document.friendform1.friends[i].value;
           str1=str1+","+document.friendform1.frnd[i].value;
         }
       }
    }
        document.getElementById('invite_1').value=str;
        if(str!='' && str1!=''){
            document.getElementById('invited').style.display="block";
        }
        else{
            document.getElementById('invited').style.display="none";
        }
        document.getElementById('invited').value = str1;
        document.getElementById("low-high-div").style.display="none";
        document.getElementById("events-input-bg2").value="";
        document.getElementById("events-input-bg3").value="";
        closemessage1();
        return false;

 }

所以请有人让我知道我的错误。

谢谢

4

2 回答 2

2

当有一项返回时,则不重新调整数组元素对象返回,因此您需要以不同的方式访问它

var len=document.friendform1.friends.length;
if(len>1)
for(i=0;i<len;i++)
{
  if(document.friendform1.friends[i].checked==true)
   {
     if(str=='')
     {
       str=document.friendform1.friends[i].value;
       str1=document.friendform1.frnd[i].value;
     }
.
.
.
}
else
{
  if(document.friendform1.friends.checked==true)
   {
     if(str=='')
     {
       str=document.friendform1.friends.value;
       str1=document.friendform1.frnd.value;
     }
   }
.
.
.

}
于 2013-03-13T07:40:15.760 回答
0

您可以简单地尝试一下:

var len=document.friendform1['friends[]'].length || 1;
for(i=0;i<len;i++)
{
  ...
    ...
   ...
}
...
...
...

阅读为什么在以不同方式使用它时无法获得复选框长度?

于 2013-03-13T08:30:26.497 回答