php - Javascript 函数仅从 PHP for 循环输出第一个复选框的值

标签 php javascript for-loop

我有一个 for 循环,它根据从 mySQL 数据库收到的信息形成一个复选框列表。下面是形成复选框的 for 循环(删除了不必要的代码)。

for ($i = 1; $i <= count($descriptionIDsArray); $i++) {
    $statuses = mysql_fetch_assoc(mysql_query(sprintf("SELECT status, description FROM status_descriptions WHERE description_id='$i'")));
    $status = $statuses["status"]; ?>
    <input type="checkbox" value="<?php echo $status ?>" <?php if ($check == 1) {echo "checked='checked'";} ?> onchange="checkBox()" /><?php echo $description ?><br />
<?php } ?>

选中或取消选中一个框会调用以下函数:

<script type="text/javascript">
    function checkBox() {
        var status = $("input:checkbox").val();
        document.getElementById("test").innerHTML = status;
    }
</script>

我能在“测试”中出现的唯一值是第一个复选框的值。如果我在整个初始 for 循环中回显 $status,所有值都正确显示,因此当 Javascript 代码检索相应值时,问题似乎出现了。

最佳答案

如果您仍想保留内联事件处理程序,请将其更改为:

onclick="checkBox(this);"

并将函数更改为:

function checkBox(chk) {
    var status = chk.value;
    document.getElementById("test").innerHTML = status;
}

请注意,onclickonchange 更受复选框和单选按钮的支持。此外,我提供此更改的原因是因为将 this 传递给 checkBox 函数引用了应用了 click 的元素。这样,您就知道在 checkBox 内部,参数 chk 将是刚刚更改的特定复选框。然后只需使用 .value 获取值,因为它是一个简单的 DOM 节点。

无论如何,我建议使用 jQuery 来绑定(bind) click 事件。像这样的东西:

$(document).ready(function () {
    $("input:checkbox").on("click", function () {
        var status = this.value;
        document.getElementById("test").innerHTML = status;
    });
});

但您显然可以使用 $(this).val() 而不是 this.value,但何必呢?如果您使用 jQuery 绑定(bind)事件,只需确保在 HTML 中取出 onchange/onclick 内联事件处理程序即可。

您可以在此处查看为什么使用 input:checkbox 而不仅仅是 :checkbox 作为 jQuery 选择器:http://api.jquery.com/checkbox-selector/

关于php - Javascript 函数仅从 PHP for 循环输出第一个复选框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145567/

相关文章:

javascript - 将 ... 放在出现在 div 中的文本中,并在 javascript 中 overflow hidden

php while 在 for 循环内,使用 strlen

java - 变量 "j"无法解析为变量 - 二维数组

PHP - Foreach SQL 查询

php - Webdev - 日期选择器 GUI 推荐/灵感

php - Imagick:使用 mask 组合

javascript - 双让声明 : How does let hoisting work in for loops?

PHP 作为 Node.js 服务器的客户端

javascript - 为什么 Math.pow(1, NaN) 在 JavaScript 中等于 NaN?

javascript - 删除后删除原始元素