0

サーバーに接続しているすべてのユーザーに、接続されているすべてのユーザー名をブロードキャストする単純なチャット アプリケーションを作成しました。ユーザー名のリストは、新しいユーザーが接続されるたびに更新されます。

私の問題は..接続されたユーザーのリストは、新しく接続されたユーザーと他のユーザーにのみ適切に表示されます.下の画像でわかるように、リストは重複したユーザー名でいっぱいです:

ここに画像の説明を入力

なぜこれが起こっているのかわかりません..理解を明確にするために、showUsernamesユーザー名のリストが表示されているdivもクリアしています。

この問題に関連する以下のコードを見てください。(ユーザーが増加すると、最初に接続したユーザーのリストも増加し、次に 2 番目、3 番目、4 番目...)

chat.client.joins = function () {

    //calling the server side method "GetConnectedUsers"
    //The return value of the method is stored in a variable "users"
    chat.server.getConnectedUsers().done(function (users) {
        //clearing the div, to fill it again 
        $('#showUsernames').val('');
        console.log(users.length);
        //calling each username stored in a static dictionary on server side using for loop
        for (var i = 0; i < users.length; ++i) {
            $('#showUsernames').append('<li>' + users[i].Name + '</li>');
        }
    });
};
4

1 に答える 1

3

すでに接続されているユーザーを確認していません。

これを回避する最も簡単な方法は、最初にリストを空にすることです。

$('#showUsernames').empty();
for (var i = 0; i < users.length; ++i) {
  $('#showUsernames').append('<li>' + users[i].Name + '</li>');
}

line 72files.js

編集: を使用してリストをクリアしようとしていることがわかりました.val('')。上記のように、.val()入力要素などはここで機能するため、これは機能しません。.empty()

だから、line 70の-でfiles.js切り替える.val('').empty()

于 2012-12-12T09:50:28.170 に答える