var userNam;
var whoIsMove;
var playerColor;
var playerToMoveID;
var currentPlayerID = $("#currentPlayerID").val();
$(document).ready(function ()
{
//$("#moveMessage").html("Waiting for update...");
var refreshId = setInterval("GetMoves(), GetWhoIsMove()", 1000);
var to;
var from = 's65';
var pieceName;
playerColor = $("#playerColor").val();
currentPlayerID = $("#currentPlayerID").val();
/// playerToMoveID = $("#playerToMove").val();
if (currentPlayerID == playerToMoveID)
{
if (playerColor.toString() == "white")
{
$(".whiteP").draggable({
//revert: 'invalid',
//helper: 'clone',
cursor: 'move',
containment: 'checkerBoard',
start: function (event, ui)
{
//$(".square").hover(function ()
//{
// from = $(this).attr('id')
//});
pieceName = $(this).attr('id');
//alert($from);
}
});
} else if (playerColor.toString() == "black")
{
$(".blackP").draggable({
//revert: 'invalid',
//helper: 'clone',
cursor: 'move',
containment: 'checkerBoard',
start: function (event, ui)
{
//$(".square").hover(function ()
//{
// from = $(this).attr('id')
//});
pieceName = $(this).attr('id');
//alert($from);
}
});
}
}
$("div.square").droppable({
accept: '.chessPiece',
drop: function (event, ui)
{
to = $(this).attr('id');
//alert(currentPlayerID);
$.post(
"/Game/MakeMove",
{
To: to,
From: from,
PieceName: pieceName,
UserName: $("#userName").val(),
UserID1: $("#userID1").val(),
UserID2: $("#userID2").val(),
GameID: $("#gameID").val()
},
function (data)
{
if (data == 'good')
{ }
else if (data == 'bad')
{
alert("sorry not you turn");
}
}
);
}
});
})
function GetWhoIsMove()
{
$.getJSON(
"/Game/GetWhoIsMove",
{
GameID: $("#gameID").val()
},
function (data)
{
playerToMoveID = data;
}
);
}
该行导致问题: if(currentPlayerID == playerToMoveID)
它总是返回false。我检查了值,currentPlayerID取决于当前登录的播放器以及从数据库中提取的playerToMoveID。
虽然我在alert()中使用了这些变量,但它们显示了两个玩家的正确值。所以我必须问一下,if()是什么问题?
对于一个玩家来说,这应该是真实的,直到他采取行动。
答案 0 :(得分:1)
问题是您在设置之前比较playerToMoveID
的值。
您将playerToMoveID
的值设置为setInterval
导致的函数调用的结果。
当if
语句失败时,这是因为在if
有机会被激活之前正在评估setInterval
语句。
您需要想出一种方法来确保在playerToMoveID
语句之前设置if
。 setInterval
不会削减它 - 不能保证它会及时运行。
检查值时“工作”的原因可能是您已经更改了程序,当您到达显示alert
值的第二个playerToMoveID
框时,它就是有机会运行GetWhoIsMove
功能。
答案 1 :(得分:0)
可能有一些额外的空间。 为什么不试试这个:
if (jQuery.trim(currentPlayerID) == jQuery.trim(playerToMoveID))
答案 2 :(得分:0)
您已注释掉playerToMoveID
/// playerToMoveID = $("#playerToMove").val();