javascript - 根据数组中的id值在表格中显示勾选
问题描述
如果我必须单击Show checked if id values are 1 and 5
按钮,则根据数组中的 id 值在表中显示检查时出现问题。例如,如果 id 值为 1 和 5,我想在表中显示选中。
但是我使用下面的示例 javascript 编码无法在表中显示选中的选中项,后跟 id 值:
Javascript
function show_value() {
var selected_value = "1,5";
var checkbox_state = []
var id_value = []
//use each loop
$("[name=checkbox_val]").each(function() {
checkbox_state.push($(this).is(":checked"))
id_value.push($(this).closest("tr").find("[name=id_value]").val()) //push value in array
$("#checkbox_val").attr("checked", true);
})
var id_value_true = id_value.toString();
if(jQuery.inArray(selected_value, id_value_true) !== -1){
$("#checkbox_val").attr("checked", true);
}else{
$("#checkbox_val").attr("checked", false);
}
console.log("checkbox -- " + checkbox_state.toString() + " ID VALUE --" + id_value.toString())
}
以下是我的整个示例编码:
function show_value() {
var selected_value = "1,5";
var checkbox_state = []
var id_value = []
//use each loop
$("[name=checkbox_val]").each(function() {
checkbox_state.push($(this).is(":checked"))
id_value.push($(this).closest("tr").find("[name=id_value]").val()) //push value in array
$("#checkbox_val").attr("checked", true);
})
var id_value_true = id_value.toString();
if(jQuery.inArray(selected_value, id_value_true) !== -1){
$("#checkbox_val").attr("checked", true);
}else{
$("#checkbox_val").attr("checked", false);
}
console.log("checkbox -- " + checkbox_state.toString() + " ID VALUE --" + id_value.toString())
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
</head>
<body>
<table>
<tr>
<th>Checkbox</th>
<th>ID Value</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td><input type="checkbox" id="checkbox_val" name="checkbox_val" value="0"> </td>
<td><input type="text" id="id_value" name="id_value" value="1"/></td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td><input type="checkbox" id="checkbox_val" name="checkbox_val" value="0"> </td>
<td><input type="text" id="id_value" name="id_value" value="2"/></td>
<td>Francisco Chang</td>
<td>Mexico</td>
</tr>
<tr>
<td><input type="checkbox" id="checkbox_val" name="checkbox_val" value="0"> </td>
<td><input type="text" id="id_value" name="id_value" value="3"/></td>
<td>Roland Mendel</td>
<td>Austria</td>
</tr>
<tr>
<td><input type="checkbox" id="checkbox_val" name="checkbox_val" value="0"> </td>
<td><input type="text" id="id_value" name="id_value" value="4"/></td>
<td>Helen Bennett</td>
<td>UK</td>
</tr>
<tr>
<td><input type="checkbox" id="checkbox_val" name="checkbox_val" value="0"> </td>
<td><input type="text" id="id_value" name="id_value" value="5"/></td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
</tr>
<tr>
<td><input type="checkbox" id="checkbox_val" name="checkbox_val" value="0"> </td>
<td><input type="text" id="id_value" name="id_value" value="6"/></td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
</table></br>
<button type="button" id="updateBtn_5" class="btn btn-sm btn-primary" onclick="show_value()">Show checked if id values are 1 and 5</button>
</body>
</html>
实际上,我想要如下图所示的预期结果:
希望有人能指导我如何解决这个问题。谢谢。
解决方案
您遇到的第一个问题是您id
在 DOM 中的多个元素中重复相同的内容,这是无效的。id
属性必须是唯一的。
为了实现您的目标,您可以将selected_values
字符串拆分为一个数组并将其用于filter()
现有id_value
元素以仅检索具有匹配值的元素。从那里您可以遍历 DOM 以找到相关的复选框并将其checked
属性设置为 true。尝试这个:
$('#updateBtn_5').on('click', () => {
var selected_values = "1,5".split(',');
$('input[name="id_value"]')
.filter((i, el) => selected_values.indexOf(el.value) != -1)
.closest('tr').find(':checkbox').prop('checked', true);
})
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td,
th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<th>Checkbox</th>
<th>ID Value</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td><input type="checkbox" name="checkbox_val" value="0"> </td>
<td><input type="text" name="id_value" value="1" /></td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox_val" value="0"> </td>
<td><input type="text" name="id_value" value="2" /></td>
<td>Francisco Chang</td>
<td>Mexico</td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox_val" value="0"> </td>
<td><input type="text" name="id_value" value="3" /></td>
<td>Roland Mendel</td>
<td>Austria</td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox_val" value="0"> </td>
<td><input type="text" name="id_value" value="4" /></td>
<td>Helen Bennett</td>
<td>UK</td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox_val" value="0"> </td>
<td><input type="text" name="id_value" value="5" /></td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox_val" value="0"> </td>
<td><input type="text" name="id_value" value="6" /></td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
</table>
<br />
<button type="button" id="updateBtn_5" class="btn btn-sm btn-primary">Show checked if id values are 1 and 5</button>
推荐阅读
- python - IndexError:列表索引超出范围。无法理解问题出在哪里?
- javascript - JavaScript Arrays .push() 未按预期工作
- django - 如何在 Angular 中使用 localhost API
- amazon-web-services - 使用 Cognito 与 IAM 和 Amplify 进行授权
- javascript - 从下拉列表中选择选项时,将相应的数据插入到动态创建的表中
- javascript - 无线电循环不起作用 - 使用 jquery 访问检查值
- scala - 从 Array 中随机选择 n 个元素
- python - HTTP POST 请求/响应
- java - 使用 Java 检查 Windows/Unix 中是否存在 Dir
- python - Python Pandas:分块处理大型 csv 文件,同时查询特定值