javascript - 如何删除 html 表中的重复条目
问题描述
我正在将 socket.io 用于聊天和统计网络应用程序。我在弄清楚如何删除我的 html 表中的重复条目时遇到问题。重复条目的发生只是因为每次有人发送消息时我都会获取 api,所以每次我获取 api 时,统计信息都会出现在表中,并且表会获取太多数据。
var socket = io("ws://localhost:3000/");
document.getElementById("message").addEventListener("keydown", (e) => {
if (e.keyCode == 13) {
e.preventDefault();
setTimeout(() => {
document.getElementById("sendbtn").click();
}, 500);
}
});
window.onbeforeunload = function () {
return "Data will be lost if you leave the page, are you sure?";
};
document.getElementById("message").addEventListener("keydown", (e) => {
if (e.keyCode == 13) {
e.preventDefault();
document.getElementById("userbtn").click();
}
});
var send = () => {
if (
document.getElementById("username").value.length == 17 &&
username.length > 1
) {
socket.emit("message", document.getElementById("message").value);
document.getElementById("message").value = " ";
return false;
} else {
alert("Please enter and submit your steam ID");
}
};
var setusername = () => {
socket.emit("username", document.getElementById("username").value);
};
var stats = [];
socket.on("user", async (user) => {
username = user;
console.log(user);
});
socket.on("stats", (data) => {
var table = document.getElementById("users-table");
var row = table.insertRow(1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var kd = data.kd;
cell1.innerHTML = username;
cell2.innerHTML = kd.toFixed(2);
cell3.innerHTML = data.time.toFixed() + " h";
});
var username = "";
var message = " ";
socket.on("message", (msg) => {
message = msg;
document.getElementById("messages").innerHTML +=
"<span class=username-bx>" +
username +
"</span>" +
":" +
" " +
msg +
"<br>";
});
window.setInterval(function () {
var messagebox = document.getElementById("messages");
messagebox.scrollTop = messagebox.scrollHeight;
}, 50);
有关更多信息,您可以在评论中问我。
解决方案
全局变量 user 由套接字设置的事实有点奇怪(我本来希望用户成为响应的一部分)。
无论如何,如果您只想添加新消息和统计信息,我建议您为这些 (user + msg 和 user + data.kd) 计算一个 id?或者任何可以帮助您确定消息是新消息还是重复消息的) 然后维护这些列表/集合。如果 id 尚不存在,则仅在新的 msg/stats 上将它们添加到您的 Dom 中。
推荐阅读
- c# - 使用预签名 url 上传到 Amazon S3 的 C# SocketException
- arrays - 如何从 XML 文件在 Odoo 14 中添加数组
- python - 使用 pip "pip install aruco" 安装 Aruco 时出错。错误:aruco 构建轮子失败
- laravel - 如何在查询中注入变量 Eager Loads
- r - 将类类型写入数据框列的函数
- python - 无法使用 cron 运行 Python 程序:无法连接到 X 服务器
- c# - OmniSharp:无法加载文件或程序集 System.Threading.Tasks.Dataflow,版本 = 4.6.3.0
- c - 检查逗号 C 后的数字
- php - 我得到:命令不同步;你现在不能运行这个命令?
- json-server - 没有级联的Json-Server DELETE?