我不明白为什么更新一页上的标签会影响另一页上的标签。我不认为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);
}
});