javascript - 如何使用Javascript检查页面中的元素是否已经存在?
问题描述
我正在使用烧瓶 socketio 构建一个聊天应用程序。所以我正在尝试实现聊天历史记录,但我遇到的问题是,每当新用户连接时,应用程序都会将聊天历史记录发送给新用户以及旧用户,从而导致旧用户重复聊天记录用户。我已经尝试了所有服务器端,但我认为唯一的方法是通过 Javascript 客户端。有什么方法可以让 Javascript 获取聊天记录时,我可以让 JS 先检查页面上是否不存在该消息,然后附加它们吗?
这是正在发生的事情的屏幕截图。 正在发生的事情的视觉表示
代码(客户端 Javascript)
const socket = io.connect("http://127.0.0.1:5000");
socket.on('connect', function() {
socket.emit('sync_messages', {
dname: "{{dname}}"
});
});
代码(服务器端 Flask Socketio)
@socketio.on('sync_messages')
def handle_sync(data):
socketio.emit('show_all_messages', messages)
代码(又是客户端)
socket.on('show_all_messages', function(data) {
// console.log(data);
len = data.length;
for (i = 0; i < len; i++) {
const newNode = document.createElement('div');
newNode.innerHTML = data[i];
document.getElementById('messages').appendChild(newNode);
}
})
解决方案
真的很简单。您可以为需要查找和执行的元素提供任何类型的属性
function checkElement(){
if(document.querySelector(/*Selector*/)){
return true;
}
else{return false;}
}
然后在需要时调用此函数。if 语句中的 document.querySelector 会自动寻找你的 html 元素是否存在
推荐阅读
- typo3 - 为图片插入添加 data-src 标签
- php - 带有参数的magento 2加载类
- pgadmin-4 - 是否可以使用 Pgadmin4 绘制 ER 图
- ruby-on-rails - 如何使用 Axlsx:NumFmt?
- mongodb - MongoDB 复合索引未与查询一起使用
- tfs - TFS 测试构建缓慢,在“vstest.console.exe,TcpClientExtensions.MessageLoopAsync: Polling on remoteEndPoint:”上挂起几分钟
- python - 使用 SystemD 运行 python-socketio 以在后台播放声音
- javascript - 使用 tinyMCE 和 Angular 在光标处插入文本
- mysql - 在 mysql 查询中仅检查日期、小时和分钟
- python - cx_Freeze 可执行文件之间的公共 lib 文件夹