Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较两个变量的JavaScript_Javascript - Fatal编程技术网

比较两个变量的JavaScript

比较两个变量的JavaScript,javascript,Javascript,这条线路引起了问题: 如果(currentPlayerID==playerToMoveID) 它总是返回false。我已经检查了值,currentPlayerID取决于当前登录的播放器,playerToMoveID从数据库中调出 当我在alert()中使用这些变量时,它们为两个玩家显示了正确的值。所以我必须问,如果()有什么问题 只有一名球员应该是这样,直到他采取行动。可能会有一些额外的空间。 为什么不试试这个: var userNam; var whoIsMove; var pl

这条线路引起了问题: 如果(currentPlayerID==playerToMoveID)

它总是返回false。我已经检查了值,currentPlayerID取决于当前登录的播放器,playerToMoveID从数据库中调出

当我在alert()中使用这些变量时,它们为两个玩家显示了正确的值。所以我必须问,如果()有什么问题


只有一名球员应该是这样,直到他采取行动。

可能会有一些额外的空间。 为什么不试试这个:

     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))