我不明白为什么更新一页上的标签会影响另一页上的标签。我不认为DOM是那样共享的。打开一个标签或页面成功将标签更新为“ player1”,但是当我打开另一个标签/ pg时,它将两个标签均更新为“ player2”。

<script>
var socket = io.connect('http://localhost:3000');
socket.on('connect', function() {
socket.emit('join');
socket.on('joinSuccess', function (playerSlot) {
  if (playerSlot === 'player1') {
   $("#playerID").text("you are player1");
} else if (playerSlot === 'player2') {
   $("#playerID").text("you are player2");
  }
}); //end joinSuccess
}); //end connect



我只是想通知用户他们是哪个玩家。



解:

 else if (playerSlot === 'player2') {
    var elm = $("#playerID");
    var empty = !elm.text().trim();
    if (empty) {
      elm.text("you are " + playerSlot);
        }
      }

最佳答案

新用户加入时,您是否要推送“ joinSuccess”消息?在这种情况下,此消息将被传递到两个具有相同playerSlot值的页面。因此,所有页面将被更新为最后加入的玩家名称。

在这种情况下,您可以通过简单的条件处理此问题,

socket.on('joinSuccess', function (playerSlot) {
  var elm = $("#playerID");
  if (!elm.text().trim()) {
    elm.text("you are " + playerSlot);
  }
});

08-16 23:03