javascript - 从过滤表中选择元素
问题描述
我有以下代码来创建一个员工表,它允许我根据查询词过滤它们:
我想添加将与表中的员工一起包含的 html 按钮,以便我可以添加一个
<button onclick="myFunction()">Click me</button>
这将允许我创建员工并将其添加到选定员工的新列表中我想要添加的元素的图像我不确定这是否可行,所以我在这里寻求一些帮助。或者,如果无法将此 HTML 元素添加到表中,我将如何修改代码,所以如果我单击过滤表的一行,它将允许我选择该行,然后将其添加到新列表选定的员工。
非常感谢!
<style>
th{
cursor: pointer;
color:#fff;
}
</style>
<div class="row">
<div class ="col">
<div class="card card-body">
<input id="search-input" class="form-control" type="text">
</div>
</div>
</div>
<table class="table table-striped">
<tr class="bg-info">
<th class="bg-info" data-colname="name" data-order="desc">Name ▲</th>
<th data-colname="age" data-order="desc">Age ▲</th>
<th data-colname="birthdate" data-order="desc">Birthday ▲</th>
</tr>
<tbody id="myTable">
</tbody>
</table>
<script>
var myArray = [
{'name':'Michael', 'age':'30', 'birthdate':'11/10/1989'},
{'name':'Mila', 'age':'32', 'birthdate':'10/1/1989'},
{'name':'Paul', 'age':'29', 'birthdate':'10/14/1990'},
{'name':'Dennis', 'age':'25', 'birthdate':'11/29/1993'},
{'name':'Tim', 'age':'27', 'birthdate':'3/12/1991'},
{'name':'Erik', 'age':'24', 'birthdate':'10/31/1995'},
]
$('#search-input').on('keyup', function(){
var value= $(this).val()
console.log('value:', value)
var data = searchTable(value, myArray)
buildTable(data)
})
buildTable(myArray)
function searchTable(value, data){
var filteredData = []
for (var i = 0; i < data.length; i++){
value = value.toLowerCase()
var name = data[i].name.toLowerCase()
var age = data[i].age.toLowerCase()
var birthdate = data[i].age.toLowerCase()
if(name.includes(value)){
filteredData.push(data[i])
}
else if(age.includes(value)){
filteredData.push(data[i])
}
else if(birthdate.includes(value)){
filteredData.push(data[i])
}
}
return filteredData
}
$('th').on('click', function(){
var column = $(this).data('colname')
var order = $(this).data('order')
var text = $(this).html()
text = text.substring(0, text.length - 1);
if (order == 'desc'){
myArray = myArray.sort((a, b) => a[column] > b[column] ? 1 : -1)
$(this).data("order","asc");
text += '▼'
}else{
myArray = myArray.sort((a, b) => a[column] < b[column] ? 1 : -1)
$(this).data("order","desc");
text += '▲'
}
$(this).html(text)
buildTable(myArray)
})
function buildTable(data){
var table = document.getElementById('myTable')
table.innerHTML = ''
for (var i = 0; i < data.length; i++){
var colname = `name-${i}`
var colage = `age-${i}`
var colbirth = `birth-${i}`
var row = `<tr>
<td>${data[i].name}</td>
<td>${data[i].age}</td>
<td>${data[i].birthdate}</td>
</tr>`
table.innerHTML += row
}
}
</script>
解决方案
推荐阅读
- php - 在 Symfony 中使用库
- python - 加密 InMemoryUploadfile 并将加密文件保存在磁盘上
- assembly - 查找整数的所有除数的汇编程序
- python - 如何删除csv文件中的一行?
- android - Kotlin 视图绑定 java.lang.IllegalStateException:视图在侦听器中不能为空
- python - 需要:从列标题中删除空格的函数,该函数对列标题不是字符串是健壮的
- javascript - 如何使用 HTML/CSS 和 Javascript 直观地显示 Python 代码块?
- bash - 如何将一堆 m4a 文件拆分成块并用 ffmpeg 替换它们的元数据?
- magento2 - Magento 2 中购物车价格规则(促销)的内部架构是什么?
- angular - 角度动态组件更改检测不起作用