Javascript 动态创建复选框,选中事件侦听器

Javascript 动态创建复选框,选中事件侦听器,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我正在显示服务列表。我不知道名单上会有多少服务。因此,我为列出的每个服务创建了一个带有复选框的动态列表。如果表单已提交,我知道如何拉出复选框的状态,但在这种情况下,我需要知道是否在未提交表单的情况下选中了复选框。我已经研究过如何使用事件侦听器,但不知道如何指向相应的复选框。在不提交表单的情况下,如何检查每个复选框的状态?我使用值“$J”为每个复选框指定一个唯一的名称 Php和HTML: for ($J = 0; $J < $size; ++$J) { if ($sp->sos

我正在显示服务列表。我不知道名单上会有多少服务。因此,我为列出的每个服务创建了一个带有复选框的动态列表。如果表单已提交,我知道如何拉出复选框的状态,但在这种情况下,我需要知道是否在未提交表单的情况下选中了复选框。我已经研究过如何使用事件侦听器,但不知道如何指向相应的复选框。在不提交表单的情况下,如何检查每个复选框的状态?我使用值“$J”为每个复选框指定一个唯一的名称

Php和HTML:

for ($J = 0; $J < $size; ++$J) {
    if ($sp->sosts[$J] == 'A') {
        $lbl   = $sp->solbl[$J];  
echo <<<_END
        <form method = 'POST' action = ''>
            <div id = 'currentsrv'>
                <div class = 'servhdr'>
                    <input type = 'checkbox' class = 'servcb' 
                        name = "srvcb$J">
                    <div class = 'servtitle'>
                        <span id = 'servlbl'> Service : </span>
                        <span id = 'servnm'> $lbl </span>
                    </div>
                </div>
            </div>
        </form>
_END;
    }
}
($J=0;$J<$size;++$J)的
{
如果($sp->sosts[$J]=='A'){
$lbl=$sp->solbl[$J];

echo这里有一个示例向您展示这个原理。为了方便起见,我使用了jQuery

在输出中,
true
表示选中,
false
表示未选中

函数printCheckboxStates(){
让states=$('input[type=checkbox]').toArray().map(c=>c.checked);
let checked=states.filter(checked=>checked).length;
log(`${checked}复选框被选中,`,状态);
}

获取复选框状态

一种可能的解决方案是为每个复选框设置一个id,在Javascript中,您可以这样做(如果您知道id是什么):

var checkbox=document.getElementById(“theID”);
如果(复选框。选中){
//如果选中复选框,请执行某些操作
}
//或者,使用变量存储是否选中了ckeckbox

var isMyCheckboxChecked=checkbox.checked
你在使用jQuery吗?一个问题是当你“需要知道框是否被选中”。当用户点击其中一个复选框时?或者在提交表单之前?旁注:我认为这不是一个好主意(除非我错过了什么)为每个复选框创建一个新的
。不要重复唯一的ID。在eventlistener(无论发生什么事件)中,您可以通过获取所有复选框。或者如果您需要将eventlistener绑定到所有复选框
$(c)。is(“:checked”)
@Taplar谢谢你的提示。更新了我的答案。我似乎记得属性在过去是不可靠的,因此
:checked
:checked
是那些真正没有意义的伪选择器之一,除非你将它添加到过滤器或选择器本身。如果你已经有了普通对象,它是只是一个直接的属性访问。如果您已经将该对象作为jQuery对象,那么
prop('checked'))
is less worker这是一个你想要的活动吗?看起来它可能会起作用。还有一些其他的事情要做,所以我必须调整它,看看它是否适合我。谢谢。我对Javascript非常陌生,所以有时我需要花一点时间来思考它。