Javascript 我的功能不是一直在运行

Javascript 我的功能不是一直在运行,javascript,Javascript,我希望总是运行checkDouble,因为这样我可以决定是否应该调用changeTurn。在我添加checkType之前,它一直工作正常。我希望始终运行checkDouble,因为这样我可以决定是否应该调用changeTurn。在我添加checkType之前,它工作得很好 HTML <div class="board"> <div class="col1"> <?php testdrawBoard("-1","40","29"

我希望总是运行checkDouble,因为这样我可以决定是否应该调用changeTurn。在我添加checkType之前,它一直工作正常。我希望始终运行checkDouble,因为这样我可以决定是否应该调用changeTurn。在我添加checkType之前,它工作得很好

HTML

<div class="board">

    <div class="col1">
               <?php testdrawBoard("-1","40","29"); ?>                                     
    </div>

    <div class="col2">
        <div class="top">
                <?php testdrawBoard("1","1","10"); ?>
        </div>                      
        <div class="center">
        <div class="dicewrapper">
        <span class="dice1" id="dice1"></span>
        <span class="dice2" id="dice2"></span>
        </div>
        </div>
        <div class="bottom">
               <?php testdrawBoard("-1","29","20"); ?>
        </div>
    </div>       

    <div class="col3">
                <?php testdrawBoard("1","10","21"); ?>
    </div>

</div>

<button id="roll1" onclick="playgame()">Player 1 Roll</button><button id="roll2" onclick="playgame()">Player 2 Roll</button>
<div id="debug1"></div>
<div id="debug2"></div>
<div id="debug3"></div>
<div id="debug4"></div>  
<div id="debug5"></div>  
<div id="debug6"></div>

可能是因为之前调用的函数之一引发了一些错误。您的控制台应该告诉您确切的原因。不,它有时会运行,因此没有错误。我正在使用pspad编辑器。。。不知道你说的控制台是什么意思。我想知道为什么有时候它不运行?我说得通吗?如果在浏览器上运行,请在浏览器上点击F12以查看javascript控制台。该代码中没有rollDice函数?您提供的示例不完整,很难调试。代码自上而下运行,除非异步。Elton,您是说问题在于没有调用checkDouble,但是在这段代码中,它在playgame函数中只调用一次,因为未定义的函数,它无论如何都不会运行。如果没有问题代码,我们无法提供帮助。
        var doubleCount = 0;
        var poslocation=["","Cairo","Community Chest","Vienna","Income Tax","Schiphol Airport","Brussels","Chance","Oslo","Zurich","Jailhouse",
        "Amsterdam","Electro","Bangkok","Istanbul","de Gaulle Airport", "Hong Kong", "Chest", "Madrid", "Sydney","Coffee House",
        "Toronto","Chance","Mumbai","Rome","Heathrow Airport","Rio de Janeiro","Tokyo","Nuclear Power Plant","Paris",
        "Thuglife", "Berlin","Bejing","Community Chest","Moscow","John F Kennedy Airport","Chance","New York","Super Tax","London", "Go"];
        playerturn=1;  createPlayers(); createPositions();   
function playgame(){

        rollDice(); //two dice rolls

        drawDice(); //displays the dice

        setPosition(); //update player position 

        movePiece();

        checkType();
        alert("going to check double");

        checkDouble();
}
function rollDice()
{
        var d1 = Math.floor(Math.random() * ((6-1)+1) + 1);
        var d2 = Math.floor(Math.random() * ((6-1)+1) + 1);
        dice1=d1;
        dice2=d2;
        dicetotal=dice1+dice2;
        document.getElementById("debug1").innerHTML= "Dice roll was:" + dice1 + "," + dice2;
}
function drawDice()
{
        $('.dice1').attr('id',  "dice" + dice1);
        $('.dice2').attr('id', "dice" + dice2);
}
function setPosition()
{
        currentpos =  players['player'+playerturn].currentpos;
        startpos =    players['player'+playerturn].startpos;
        prevpos =       players['player'+playerturn].prevpos;
        currentpos = startpos + dicetotal;
        prevpos = currentpos - dicetotal;
        players['player'+playerturn].currentpos = currentpos;
        players['player'+playerturn].prevpos = prevpos; 

        if(players['player'+playerturn].currentpos>40){
        players['player'+playerturn].currentpos = players['player'+playerturn].currentpos - 40;
        players['player'+playerturn].balance = players['player'+playerturn].balance + 200;
        }
        players['player'+playerturn].startpos = players['player'+playerturn].currentpos;
}
function movePiece()
{      

         var z = players['player'+playerturn].currentpos - dicetotal;
         var x = "#piece"+playerturn+"pos"+players['player'+playerturn].currentpos; 
         var y = "#piece"+playerturn+"pos"+players['player'+playerturn].prevpos;
         $(x).slideToggle();
         $(y).slideToggle();
}
function checkType(){
        var currentpos = players['player'+playerturn].currentpos;
        var x = positions['position'+currentpos].forsale;
        if(x=="y"){
        checkOwner();      
        }

}
function checkOwner(){


        var currentpos = players['player'+playerturn].currentpos;
        var owner = positions['position'+currentpos].owner;
        if(owner=="unowned"){
        assignOwner();
        }
        else{
        payrent();
        }
}
function payTax(){

        type = positions['position'+currentpos].type;
        if(type=="tax"){

        tax = positions['position'+currentpos].tax;
        players['player'+playerturn].balance = players['player'+playerturn].balance - tax;

        }
}
function assignOwner()
{      
         var currentpos = players['player'+playerturn].currentpos;
         players['player'+playerturn].balance = players['player'+playerturn].balance - positions['position'+players['player'+playerturn].currentpos].purchaseprice;
         positions['position'+currentpos].owner = "player" + playerturn;

}
function payrent()
{      
         if ( positions['position'+currentpos].type=="utility"){

         price = dicetotal * 4;
         players['player'+playerturn].balance = players['player'+playerturn].balance - price;

         }

         var currentpos = players['player'+playerturn].currentpos;
         players['player'+playerturn].balance = players['player'+playerturn].balance - positions['position'+currentpos].rentprice;

}
function checkDouble()
{
        if (dice1 == dice2) {                                                                    
        doubleCount++;
        if (doubleCount == 3)                                                             
        {
           alert("Thuglife");
        }
        alert("Not going to change players because there is a double alright mate!");
        }
        else if (dice1 != dice2){
        alert("Going to change players now!")
        changeTurn();
        doubleCount = 0;
        }
}
function changeTurn()
{

      if(playerturn==1) { 
      playerturn = 2 ; 
      $("#roll1").toggle();
      $("#roll2").toggle();
      }
      else{ 
      playerturn = 1;
      $("#roll2").toggle(); 
      $("#roll1").toggle();
      }
}

function createPlayers(){

    players = {

    player1:{currentpos:  0,prevpos: 0,startpos: 0,balance: 1500},
    player2:{currentpos:  0,prevpos: 0,startpos: 0,balance: 1500}
              };
}
function createPositions(){
    positions = {
    position1:{title:  "Cairo",type: "brown",owner: "unowned",purchaseprice: 60,rentprice: 2,forsale: "y"},
      position2:{title:  "Community Chest",type: "card",forsale: "n"},
    position3:{title:  "Vienna",type: "brown",owner: "unowned",purchaseprice: 60,rentprice: 4,forsale: "y"},
      position4:{title:  "Income Tax",type: "tax",tax: 200},
    position5:{title:  "Schiphol Airport",type: "airport",owner: "",purchaseprice: 200,rentprice: 25,forsale: "y"},
    position6:{title:  "Brussels",type: "blue",owner: "unowned",purchaseprice: 100,rentprice: 6,forsale: "y"},
     position7:{title:  "Chance",type: "card",forsale: "n"},
    position8:{title:  "Oslo",type: "blue",owner: "unowned",purchaseprice: 100,rentprice: 6,forsale: "y"},
    position9:{title:  "Zurich",type: "blue",owner: "unowned",purchaseprice: 120,rentprice: 8,forsale: "y"},
      position10:{title:  "Jailhouse",type: "jail",forsale: "n"},
    position11:{title:  "Amsterdam",type: "pink",owner: "unowned",purchaseprice: 140,rentprice: 10,forsale: "y"},
      position12:{title:  "Electro",type: "utility",owner: "unowned",purchaseprice: 150,forsale: "y"},
    position13:{title:  "Bangkok",type: "pink",owner: "unowned",purchaseprice: 140,rentprice: 10,forsale: "y"},
    position14:{title:  "Istanbul",type: "pink",owner: "unowned",purchaseprice: 160,rentprice: 12,forsale: "y"},
    position15:{title:  "Charles de Gaulle Airport",type: "airport",owner: "",purchaseprice: 200,rentprice: 25,forsale: "y"},
    position16:{title:  "Hong Kong",type: "orange",owner: "unowned",purchaseprice: 180,rentprice: 14,forsale: "y"},
      position17:{title:  "Community Chest",type: "card",forsale: "n"},
    position18:{title:  "Madrid",type: "orange",owner: "unowned",purchaseprice: 180,rentprice: 14,forsale: "y"},
    position19:{title:  "Sydney",type: "orange",owner: "unowned",purchaseprice: 200,rentprice: 16,forsale: "y"},
      position20:{title:  "Coffee House",type: "coffee",forsale: "n"}, 
    position21:{title:  "Toronto",type: "red",owner: "unowned",purchaseprice: 220,rentprice: 18,forsale: "y"},
      position22:{title:  "Chance",type: "card",forsale: "n"},
    position23:{title:  "Mumbai",type: "red",owner: "unowned",purchaseprice: 220,rentprice: 18,forsale: "y"},
    position24:{title:  "Rome",type: "red",owner: "unowned",purchaseprice: 220,rentprice: 20,forsale: "y"},
      position25:{title:  "Heathrow Airport",type: "airport",owner: "",purchaseprice: 200,rentprice: 25,forsale: "y"},
    position26:{title:  "Rio de Janeiro",type: "yellow",owner: "",purchaseprice: 240,rentprice: 22,forsale: "y"},
    position27:{title:  "Tokyo",type: "yellow",owner: "unowned",purchaseprice: 240,rentprice: 22,forsale: "y"},
      position28:{title:  "Nuclear",type: "utility",owner: "unowned",purchaseprice: 150,forsale: "y"},
    position29:{title:  "Paris",type: "yellow",owner: "unowned",purchaseprice: 280,rentprice: 24,forsale: "y"},
      position30:{title:  "Go to Jail",type: "jail",forsale: "n"},
    position31:{title:  "Berlin",type: "green",owner: "unowned",purchaseprice: 300,rentprice: 26,forsale: "y"},
    position32:{title:  "Bejing",type: "green",owner: "unowned",purchaseprice: 300,rentprice: 26,forsale: "y"}, 
      position33:{title:  "Community Chest",type: "card",forsale: "n"},
    position34:{title:  "Moscow",type: "green",owner: "unowned",purchaseprice: 320,rentprice: 28,forsale: "y"},
    position35:{title:  "John F Kennedy Airport",type: "airport",owner: "unowned",purchaseprice: 200,rentprice: 25,forsale: "y"},
      position36:{title:  "Chance",type: "card",forsale: "n"},
    position37:{title:  "New York",type: "navy",owner: "unowned",purchaseprice: 350,rentprice: 35,forsale: "y"},
      position38:{title:  "Super Tax",type: "tax",tax: 100,forsale: "n"}, 
    position39:{title:  "London",type: "navy",owner: "unowned",purchaseprice: 350,rentprice: 50,forsale: "y"}
              };
} 
function debugview(){
        document.getElementById("debug1").innerHTML= "Currently player 1 is at " + poslocation[players['player1'].currentpos] + " which is owned by: " + positions['position'+players['player1'].currentpos].owner;
        document.getElementById("debug2").innerHTML= "Currently player 2 is at " + poslocation[players['player2'].currentpos]+ " which is owned by: " + positions['position'+players['player2'].currentpos].owner;
        document.getElementById("debug3").innerHTML= "Player 1 balance is: $" + players['player1'].balance;
        document.getElementById("debug4").innerHTML= "Player 2 balance is: $" + players['player2'].balance;
        //document.getElementById("debug6").innerHTML= "Dice roll was:" + dice1 + "," + dice2;
        }