Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我不在复选框中获取复选值?_Php_Javascript_Checkbox - Fatal编程技术网

Php 为什么我不在复选框中获取复选值?

Php 为什么我不在复选框中获取复选值?,php,javascript,checkbox,Php,Javascript,Checkbox,我有一个复选框。选中该框时,相应的ID将被放入文本框中。但是,当数据库中只有一个值时,我无法获取检查值。你能告诉我为什么吗?这是我的密码: <? if(isset($AcceptFriend)) {?> <form action="<?=site_url()?>friends/Accept_Friend" name="orderform" id="orderform" method="post" style="background:#CCCC99"> <

我有一个复选框。选中该框时,相应的ID将被放入文本框中。但是,当数据库中只有一个值时,我无法获取检查值。你能告诉我为什么吗?这是我的密码:

<? if(isset($AcceptFriend)) {?>
<form action="<?=site_url()?>friends/Accept_Friend" name="orderform" id="orderform" method="post" style="background:#CCCC99">
<input type="text" name="chId" id="chId" >
<table  border="0" height="50%" id="chkbox" width="50%" >
<tr>
<? foreach($AcceptFriend as $row)
{?>
<tr>
<td>Name</td><td><?=$row['dFrindName'].'</br>';?></td>
<td> <input type="checkbox" name="checkId" id="checkId" value="<? echo  $row['dMemberId']; ?>" onClick="get_check_value()" ></td>
</tr>

<? }}?>
</tr>
 <tr> <td width="10px"><input type="submit" name="submit" id="submit" class="buttn" value="AcceptFriend"></td></tr>

</table>


</form>


您应该给复选框一个类似数组的name属性:“checkId[]”
对于每个复选框、检查ID14或以后可以跟踪的任何内容,ID属性都应该不同。

安德尔是对的,你最好不要因为一个健康的批评而否决一个人——他的答案可能无法解决你的问题,但html ID应该具有唯一的值,类标识符可以具有相同的名称

如果只使用一次ID,document.orderform.checkId.length的返回值将为您提供该对象的属性数,因为document.orderform.checkId将是该单个对象

在您的循环中,您将遍历所有这些属性,并要求他们对其属性进行“检查”。因为它们没有该属性,所以您将得到错误,并且脚本将失败

多次使用ID时,document.orderform.checkId将成为该ID的所有对象的数组,长度将返回它们的数量

在这种情况下,您的循环将按预期遍历所有复选框

最好的解决方案是使用document.getElementsByName('checkId')或添加一个隐藏的虚拟复选框,通过以i=1而不是i=0启动循环,该复选框将被忽略


由于ID应该是唯一的,我建议您将脚本更改为使用name属性并使用document.getElementsByName('checkId')它将始终返回一个数组。

不,它不起作用。实际上,如果有多个复选框,我将获取值,但如果复选框的长度为1,则它不起作用available@udaya:注释是正确的,所以请进行更改,但它也不完全是一个答案,所以-1。@udaya:嗯,我想这会使它起作用的,实际上没有测试。你试过了吗?可能是,如果只有一个名为“checkId”的元素,则不存在数组,且值位于document.orderform.checkId.values中。这两个元素都不是答案,因此它们应该位于注释中。欢迎来到StackOverflow,请不要对鼓励良好行为的人感到不安。哈哈,我只是想代表安德尔,他注意到了一些事情,因此被否决了,谢谢。我很高兴有很多程序员可以向我学习,也有很多人可以帮助我,可惜你不是他们中的一员。@Matchu:我真的很困惑,原来的代码居然还能工作;)这样的反馈太棒了,请继续!同时,请在回答的评论中加入这样的反馈,而不是单独的回答,因为前者没有任何组织意义。没关系——现在你知道了:)“答案”应该是回答最初的问题,而不是像这里这样由对话组成。
function get_check_value()
{
    var c_value = "";

    for (var i=0; i < document.orderform.checkId.length; i++)
       {
       if (document.orderform.checkId[i].checked)
          {
          c_value = c_value + document.orderform.checkId[i].value + "\n";
          }
       }
       alert(c_value);
       document.getElementById('chId').value= c_value;
}