【发布时间】:2020-04-07 11:28:54
【问题描述】:
我在互联网上搜索过这个问题,但我没有找到类似的东西。
我在 php 中有一个数组。如果复选框的值与数组中的值相同,我将此数组传递给 javascript 函数以检查和禁用复选框。但是,该函数似乎只使用数组的第一个元素来禁用一个复选框。
例如,我的 php 数组中有 3 个元素 A11、A10、A9。当我将此数组传递给 js 函数时,它只选中并禁用了复选框 A11。这是为什么呢?
下面是我在 php 中的数组的代码:
$query = "SELECT reserved FROM et_seats WHERE event_id = '$theatre->id'";
$reserved = mysqli_query($conn,$query) or die(mysqli_error($conn));
$array = array();
while ($row = mysqli_fetch_array($reserved)){
array_push($array, $row[0]);
}
以下是我拥有的javascript函数:
<script>
$(function() {
var reserved = <?php echo '["' . implode('","', $array) . '"]' ?>;
var seats = document.getElementsByClassName('seats');
for (var i = 0; i <= seats.length; i++) {
reserved.map(function(v) {
if (seats[i].value === v) {
seats[i].setAttribute("disabled", "true");
seats[i].setAttribute("checked", "true");
}
});
}
});
</script>
为什么函数只取数组中的第一个元素?我哪里做错了?我怀疑这是我将 php 数组更改为 javascript 的行。我也试过var reserved = <?php echo json_encode($array); ?>;,但还是不行
这是我的 html 复选框的 sn-p。他们实际上是为了一个座位计划
<td>
<input type="checkbox" class="seats" name="selected[]" value="A3">
</td>
<td>
<input type="checkbox" class="seats" name="selected[]" value="A2">
</td>
<td>
<input type="checkbox" class="seats" name="selected[]" value="A1">
</td>
【问题讨论】:
-
@Nick 是的,我也试过了,结果一样。
-
你能分享一点你的 HTML 吗?
-
当然,我的问题中包含了
-
除了应该是
< seats.length的<= seats.length之外,只要reserved具有有效值,您的代码就可以正常工作。您是否在调试器中检查过reserved的值?
标签: javascript php jquery arrays checkbox