JavaScript比较两个变量

时间:2011-01-05 21:26:00

标签: javascript

     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()是什么问题?

对于一个玩家来说,这应该是真实的,直到他采取行动。

3 个答案:

答案 0 :(得分:1)

问题是您在设置之前比较playerToMoveID的值。

您将playerToMoveID的值设置为setInterval导致的函数调用的结果。

if语句失败时,这是因为在if有机会被激活之前正在评估setInterval语句。

您需要想出一种方法来确保在playerToMoveID语句之前设置ifsetInterval不会削减它 - 不能保证它会及时运行。

检查值时“工作”的原因可能是您已经更改了程序,当您到达显示alert值的第二个playerToMoveID框时,它就是有机会运行GetWhoIsMove功能。

答案 1 :(得分:0)

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

if (jQuery.trim(currentPlayerID) == jQuery.trim(playerToMoveID))

答案 2 :(得分:0)

您已注释掉playerToMoveID

的设置

/// playerToMoveID = $("#playerToMove").val();