比较两个变量的JavaScript
这条线路引起了问题: 如果(currentPlayerID==playerToMoveID) 它总是返回false。我已经检查了值,currentPlayerID取决于当前登录的播放器,playerToMoveID从数据库中调出 当我在alert()中使用这些变量时,它们为两个玩家显示了正确的值。所以我必须问,如果()有什么问题比较两个变量的JavaScript,javascript,Javascript,这条线路引起了问题: 如果(currentPlayerID==playerToMoveID) 它总是返回false。我已经检查了值,currentPlayerID取决于当前登录的播放器,playerToMoveID从数据库中调出 当我在alert()中使用这些变量时,它们为两个玩家显示了正确的值。所以我必须问,如果()有什么问题 只有一名球员应该是这样,直到他采取行动。可能会有一些额外的空间。 为什么不试试这个: var userNam; var whoIsMove; var pl
只有一名球员应该是这样,直到他采取行动。可能会有一些额外的空间。 为什么不试试这个:
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;
}
);
}
您已经注释掉了
playerToMoveID的设置
///playerToMoveID=$(“#playerToMove”).val()代码>问题在于,在设置playerToMoveID
之前,您正在比较它的值
您可以将playertomovid
的值设置为setInterval
引起的函数调用的结果
当if
语句失败时,这是因为if
语句是在setInterval
有机会触发之前被评估的
您需要想出一种方法来确保在if
语句之前设置playertomovid
。setInterval
不会切断它——不能保证它会及时运行
当您检查值时,它“起作用”的原因可能是您已经对程序进行了足够的更改,当您进入第二个显示playerToMoveID
值的alert
框时,它有机会运行GetWhoIsMove
函数。我不认为它在OP的实际代码中被注释掉了,因为他能够测试两者的值。但也许我错了…我希望不会。这真的是一个脸掌瞬间。没有playerToMoveID在函数中设置。我将其硬编码并从数据库中设置,但事实证明它并没有按预期工作;p、 但是您尚未在$(document).ready()中调用该函数。目前无法设置该变量;这行就行了。GetWhoIsMove()是设置此变量的函数。不要将字符串传递给setInterval
。我已经检查了(playerToMoveID!=null),它工作正常,所以我不认为这是一种情况,但我可能错了。==是邪恶的。==建议使用。:)
if (jQuery.trim(currentPlayerID) == jQuery.trim(playerToMoveID))