【发布时间】:2018-12-20 09:35:34
【问题描述】:
我正在尝试实时开发一些东西,在这种情况下,我将 socketio 用于 nodejs。尽管其他一切工作正常,但我现在的主要问题是我的程序在 HTML 之前首先加载了 javascript,因此这意味着开始时的输出只是空的。
在我的代码中,javascript 调用数据库中的所有其他内容,并通过标签连接起来,然后在 html 中抛出。
这是我的 html 代码:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<table>
<tr>
<td>
<table id="output" border=1>
<thead id="headers">
<th>Name</th>
<th>Address</th>
<th>Number</th>
</thead>
<tbody id="online">
</tbody>
</table>
</td>
<td>
<table id="output" border=1>
<thead id="headers">
<th>Name</th>
<th>Address</th>
<th>Number</th>
</thead>
<tbody id="offline">
</tbody>
</table>
</td>
</tr>
</table>
<script src="/chat.js"></script>
</body>
</html>
这里是javascript:
var online = document.getElementById('online'),
offline = document.getElementById('offline');
socket.on('user joined', function(data) {
online.innerHTML = "";
for (var ctr = 0; ctr < data.length; ctr++) {
online.innerHTML += '<td>' + data[ctr].name + '</td>' +
'<td>' + data[ctr].address + '</td>' +
'<td>' + data[ctr].number + '</td>';
}
});
socket.on('user left', function(data) {
offline.innerHTML = "";
for (var ctr = 0; ctr < data.length; ctr++) {
offline.innerHTML += '<td>' + data[ctr].name + '</td>' +
'<td>' + data[ctr].address + '</td>' +
'<td>' + data[ctr].number + '</td>';
}
});
我已经在网上搜索过这个,但是我的情况不同,因为我在 html 中调用 javascript 文件,而不是让所有脚本都带有 html 本身。
我也读过在 html 工作之后调用 javascript 文件,但显然,我已经做到了(如我的代码中所见),但仍然没有。
【问题讨论】:
-
你可以让脚本只在正文加载后执行吗?这将适用于您的用例
-
我理解这就是我想要实现的目标,但是我对与前端的几乎任何关系都不太熟悉,更不用说 html(甚至 css)了。也就是说,你能告诉我怎么做吗?
-
@Capricorn - 我尝试按照链接上的内容进行操作,但它对我不起作用。也许我做错了?
-
你能告诉我们你的浏览器控制台吗,只需按 F12 并选择控制台选项卡。如果那里记录了错误,那可能会有所帮助。
标签: javascript html node.js socket.io