Php 为什么我不在复选框中获取复选值?
我有一个复选框。选中该框时,相应的ID将被放入文本框中。但是,当数据库中只有一个值时,我无法获取检查值。你能告诉我为什么吗?这是我的密码: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"> <
<? 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;
}