javascript - 如何为每条记录包含一个可点击的链接或按钮?HTML + 数组 + 表格
问题描述
我从 youtube 学习了一个示例代码,用于将数组动态放入可排序的 HTML 表中。下面是代码。
如何使显示 HTML 表中的每条记录可点击并调用 myFunction()?然后 myFunction() 将获取相应行中 Name 的值并执行另一个查询。
HTML 部分 ->
<table class="table table-striped">
<tr class="bg-info">
<th data-column="name" data-order="desc">Name ▲</th>
<th data-column="age" data-order="desc">Age ▲</th>
<th data-column="birthdate" data-order="desc">Birthday ▲</th>
</tr>
<tbody id="myTable">
</tbody>
javascript部分
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'},
]
$('th').on('click', function(){
var column = $(this).data('column')
var order = $(this).data('order')
var text = $(this).html()
text = text.substring(0, text.length - 1)
if(order == 'desc'){
$(this).data('order', "asc")
myArray = myArray.sort((a,b) => a[column] > b[column] ? 1 : -1)
text += '▼'
}else{
$(this).data('order', "desc")
myArray = myArray.sort((a,b) => a[column] < b[column] ? 1 : -1)
text += '▲'
}
$(this).html(text)
buildTable(myArray)
})
buildTable(myArray)
function buildTable(data){
var table = document.getElementById('myTable')
table.innerHTML = ''
for (var i = 0; i < data.length; i++){
var row = `<tr>
<td>${data[i].name}</td>
<td>${data[i].age}</td>
<td>${data[i].birthdate}</td>
</tr>`
table.innerHTML += row
}
}
我的函数调用 Js 部分
function myFunction() { " wanna get the value of the row if link is click" }
解决方案
您需要在调用之后buildTable(myArray)
添加以下内容,以便<tr>
标签可以在您为其分配点击事件之前呈现。
$('tr').click(function(){
var name = $(this).children('td').first().html();
yourFunction(name);
});
function yourFunction(name){
//do things with name here
}
此外,这假定第一个td
将始终包含名称。更好的实现是重构buildTable
函数并给你的类td
推荐阅读
- r - 投影仪演示中的输出问题
- windows - 从 .bat 中不完整的名称执行 exe
- parsing - Haskell 中的 DRYer 通用类型
- c# - Unity RGB 发射颜色的变化仅在达到 0 时显示
- javascript - SAPUI5 组件的响应在 redimensionning 组件时不起作用
- javascript - Exceljs:迭代每行和每列的每个单元格
- android - 将多个文本视图对齐到所有屏幕的中心和类似的左对齐
- java - 从 Java 代码中搜索 Keycloak 中的用户
- react-native - 如何正确设置授权标头?
- angular - 是否可以将指令应用于另一个组件模板中的组件?