【发布时间】:2019-09-30 07:38:25
【问题描述】:
我想为表格创建过滤器。该表是从数组生成的。我已经创建了复选框,现在我被卡住了。
我已经搜索了很多,但我找不到解决方案。
我想根据生成的复选框过滤表格数据,但我不知道如何将它们连接在一起。我不确切知道如何从表中收集对象,这将匹配复选框的值,以便在取消选择给定类型后过滤表的行。
我尝试使用 event.target.getAttribute('data-filter') 但过滤数组以匹配事件时出现问题。
是否有可能仅在纯 javascript 中制作这样的东西?
这是我的代码:
let array= [
{
"name": "John",
"surname": "XYZ",
"department": "IT"
},
{
"name": "John",
"surname": "XYZ",
"department": "accountancy"
},
]
function generateTableHead(table, data) {
let thead = table.createTHead();
let row = thead.insertRow();
for (let key of data) {
let th = document.createElement("th");
let text = document.createTextNode(key);
th.appendChild(text);
row.appendChild(th);
}
}
function generateTable(table, data) {
for (let element of data) {
let row = table.insertRow();
for (key in element) {
let cell = row.insertCell();
let text = document.createTextNode(element[key]);
cell.appendChild(text);
}
}
}
let table = document.querySelector("table");
let data = Object.keys(array[0]);
generateTable(table, array);
generateTableHead(table, data);
// FILTER: checkboxes
const getDepartments = array.map(function (element) {
return [element.department].join('');
});
let departmentFilters = [...new Set(getDepartments)];
let createFilters = function () {
box = document.querySelector('#filterType');
box.innerHTML = departmentFilters.map(function (department) {
let checkboxes = '<label>' +
'<input type="checkbox" data-filter="' + department + '" checked>' + department +
'</label>';
return checkboxes;
}).join('');
};
【问题讨论】:
标签: javascript arrays object checkbox