javascript - 如何更新附加 div 的数量计数

标签 javascript jquery node.js sockets

我正在构建一个套接字聊天程序,每当有人加入聊天室时,显示用户数量的徽章就会增加。 下面的代码是将新用户名添加到用户列表中的函数。新名称添加为带有 id="elementInPeople 的 div。我的问题是徽章仅显示 1,即使多个用户已进入聊天。对于如何解决此问题有任何建议吗?

socket.on("update-people", function(people){
            $("#people").empty();
            $.each(people, function(clientid, name) {
                $people.append('<div id="elementInPeople">' + name + '</div>');
                var np = $("#elementInPeople").length;
                $("#numberOfPeopleOnline").text(np);
            });
    });

服务器端:

socket.on("connection", function(client) {
client.on("join", function(name){
    console.log("Someone joined the chat");
    people[client.id] = name;
    client.emit("updateToSelf", "You have connected to the server. Join or create room to chat");
    socket.sockets.emit("update-people", people);
    client.broadcast.emit('updateToOthers', name + " has joined the server.");
});

最佳答案

无需在 dom 中搜索数据中已可用的数量。

看来 people 是一个对象,因此 Object.keys(people).length 可以为您提供计数

socket.on("update-people", function(people){
        $(".people").empty();
        $.each(people, function(clientid, name) {
            $people.append('<div class="elementInPeople">' + name + '</div>');
        });
        var np = Object.keys(people).length;
        $("#numberOfPeopleOnline").text(np);
});

关于javascript - 如何更新附加 div 的数量计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43415837/

相关文章:

javascript - 检索带有特殊字符的 json key

javascript - 如何在选中时隐藏复选框中的复选标记

javascript - 单击div时的简洁突出显示功能?

javascript - 获取鼠标相对于缩小的 div 的位置

node.js - 根 "/"上的快速路由在 app.get 中不起作用

javascript - CommonJs模块系统中 "module.exports"和 "exports"之间的区别

javascript - 在 JavaScript 中合并多个已排序对象数组的最有效方法是什么?

javascript - 如何按总和字段检索组以在 Amcharts 中显示气球文本

javascript - KnockoutJS - 将值加载到下拉列表。所选值始终为空

node.js - DynamoDB 异常 - 提供的 AttributeValue 设置了不止一种数据类型