【发布时间】:2019-08-13 22:23:09
【问题描述】:
目前,我正在获取需要在收到 HTML 表格后添加到 HTML 表格中的数据。
我已经尝试了一些方法,但在页面加载后我无法动态添加数据。
我想使用 Javascript 或 jQuery 添加它
这是 HTML 结构:
<div>
<table cellspacing="0" cellpadding="0">
<thead>
<tr>
<th scope="col"><span>Email</span></th>
<th><span>Last Name</span></th>
<th><span>First Name</span></th>
<th><span>Role</span></th>
<th><span>Cell Phone User</span></th>
</tr>
</thead>
<tbody>
<tr>
<td scope="row" data-label="Email"></td>
<td data-label="Last Name"></td>
<td data-label="First Name"></td>
<td data-label="Role"></td>
<td data-label="Cell Phone User"></td>
</tr>
</tbody>
</table>
</div>
以下是获取数据后的示例:
[{
"id": 1,
"email": "janedoe@example.com",
"familyName": "Doe",
"givenName": "Jane",
"role": "admin",
"smsUser": true
},
{
"id": 2,
"email": "johndoe@example.com",
"familyName": "Doe",
"givenName": "John",
"role": "standard",
"smsUser": false
}]
这是我迄今为止尝试过的:
这是我的事件监听器,用于在页面加载后加载数据:
window.path = "http://localhost:3000/users";
// getUsers function plus any additional functions go here ...
const getUsers = options => {
let url = new URL(window.path);
if (options) {
url.search = new URLSearchParams(options)
}
return Promise.resolve(fetch(url))
}
document.addEventListener('DOMContentLoaded', () => {
/* SELECT DOM ELEMENTS*/
let table = document.querySelector('tbody');
let promise = getUsers({page=2, role:'admin'})
.then(data => {
var html = '<table>';
for( var j in data[0] ) {
html += '<th>' + j + '</th>';
}
html += '</tr>';
for( var i = 0; i < data.length; i++) {
html += '<tr>';
for( var j in data[i] ) {
html += '<td>' + data[i][j] + '</td>';
}
}
html += '</table>';
table.appendChild(html)
return table;
})
.catch(err => {
console.log('Error fetching from /users', err);
return null
})
})
感谢任何帮助。
【问题讨论】:
-
使用jQuery很简单,你可以在这个链接https://datatables.net/examples/data_sources/dom.html找到文档和例子
-
如果您使用
querySelector获取<tbody>元素标签,为什么您的html变量字符串以'<table>'开头?如果table是对<tbody>的引用,那么table.append应该被赋予一个类似<tr><td>...</td></tr>的字符串
标签: javascript html json dom addeventlistener