我在做蛇和梯子游戏。我想将player1附加到板子的第一个单元中,但是它没有按我预期的那样工作。我需要如何解决的帮助。 javascript - 将div附加到td-LMLPHP

这是我使用的代码

var gameBoard = {
  createBoard: function(dimension, mount) {
    var mount = document.querySelector(mount);
    if (!dimension || isNaN(dimension) || !parseInt(dimension, 10)) {
      return false;
    } else {
      dimension = typeof dimension === 'string' ? parseInt(dimension, 10) : dimension;
      var table = document.createElement('table'),
        row = document.createElement('tr'),
        cell = document.createElement('td'),
        rowClone,
        cellClone;
      var output;
      for (var r = 0; r < dimension; r++) {
        rowClone = row.cloneNode(true);
        table.appendChild(rowClone);
        for (var c = 0; c < dimension; c++) {
          cellClone = cell.cloneNode(true);
          rowClone.appendChild(cellClone);
        }
      }
      mount.appendChild(table);
      output = gameBoard.enumerateBoard(table);
    }
    return output;
  },
  enumerateBoard: function(board) {
    var rows = board.getElementsByTagName('tr'),
      text = document.createTextNode(''),
      rowCounter = 1,
      size = rows.length,
      cells,
      cellsLength,
      cellNumber,
      odd = false,
      control = 0;
    for (var r = size - 1; r >= 0; r--) {
      cells = rows[r].getElementsByTagName('td');
      cellsLength = cells.length;
      rows[r].className = r % 2 == 0 ? 'even' : 'odd';
      odd = ++control % 2 == 0 ? true : false;
      size = rows.length;
      for (var i = 0; i < cellsLength; i++) {
        if (odd == true) {
          cellNumber = --size + rowCounter - i;
        } else {
          cellNumber = rowCounter;
        }
        cells[i].className = i % 2 == 0 ? 'even' : 'odd';
        cells[i].id = cellNumber;
        cells[i].appendChild(text.cloneNode());
        cells[i].firstChild.nodeValue = cellNumber;
        rowCounter++;
      }
    }
    var lastRow = rows[0].getElementsByTagName('td');
    lastRow[0].id = 'lastCell';
    var firstRow = rows[9].getElementsByTagName('td');
    firstRow[0].id = 'firstCell';
    return gameBoard;
  }
};

window.onload = (function(e) {
  gameBoard.createBoard(10, "#grid");
});

var face1 = new Image()
face1.src = "d1.gif"
var face2 = new Image()
face2.src = "d2.gif"
var face3 = new Image()
face3.src = "d3.gif"
var face4 = new Image()
face4.src = "d4.gif"
var face5 = new Image()
face5.src = "d5.gif"
var face6 = new Image()
face6.src = "d6.gif"

function rollDice() {
  var randomdice = Math.floor(Math.random() * 6) + 1;
  document.images["mydice"].src = eval("face" + randomdice + ".src")
  if (randomdice == 6) {
    alert('Congratulations! You got 6! Roll the dice again');
  }
  return randomdice;
}

function move() {
  $("#firstCell").append("#player1");
}
move();
/*body {
    background-image: url('snakesandladder2.png');
    background-repeat: no-repeat;
    background-size: 100%;
    background-color: #4f96cb;
}*/

table {
  width: 100%;
}
td {
  border-radius: 10px;
  width: 60px;
  height: 60px;
  line-height: normal;
  vertical-align: bottom;
  text-align: left;
  border: 0px solid #FFFFFF;
}
table tr:nth-child(odd) td:nth-child(even),
table tr:nth-child(even) td:nth-child(odd) {
  background-color: PowderBlue;
}
table tr:nth-child(even) td:nth-child(even),
table tr:nth-child(odd) td:nth-child(odd) {
  background-color: SkyBlue;
}

#game {
  width: 80%;
  margin-left: auto;
  margin-right: auto;
}
#gameBoardSection {
  border: 3px inset #0FF;
  border-radius: 10px;
  width: 65%;
  float: left;
}
#grid {
  z-index: -1;
}
#ladder {
  position: absolute;
  top: 300px;
  left: 470px;
  -webkit-transform: rotate(30deg);
  z-index: 1;
  opacity: 0.7;
}
#bigSnake {
  position: absolute;
  top: 20px;
  left: 200px;
  opacity: 0.7;
  z-index: 1;
}
#player1 {
  border: 1px;
  border-style: solid;
  position: absolute;
}
#diceAndPlayerSection {
  background-color: lightgrey;
  float: left;
  background-size: cover
}
#lastCell {
  background-image: url('rotstar2_e0.gif');
  background-repeat: no-repeat;
  background-size: 100%;
}
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <title></title>
  <link href="StyleSheet1.css" rel="stylesheet" />
  <script src="jquery-2.1.4.min.js"></script>
</head>

<body>
  <div id="game">
    <div id="gameBoardSection">
      <div id="grid"></div>
      <div id="ladder">
        <img src="oie_eRDOY2iqd5oQ.gif" />
      </div>
      <div id="bigSnake">
        <img src="oie_485727sRN4KKBG.png" />
      </div>
      <div id="player1" style="border: 1px; border-style: solid; position:absolute;">
        <!--style="position: absolute; top: 597px; z-index: 1;"-->
        <img src="humanPiece.png" />
      </div>

    </div>
    <div id="diceAndPlayerSection">
      <div id="reset">
        <button type="button" name="reset">New Game</button>
      </div>
      <div>
        <button type="button" name="reset">Reset</button>
      </div>
      <div>
        <button type="button" name="addPlayer">Add Player</button>
      </div>
      <div id="diceSection">
        <img src="d1.gif" name="mydice" onclick="rollDice()">
      </div>
    </div>
  </div>

  <script src="JavaScript1.js"></script>

</body>

</html>


提前致谢。

最佳答案

我会在这里建议2处更改:

  • 调用move()中的window.onload函数,因为在load之后创建了您的木板,而DOM在创建后获得了element #firstCell
  • 应该是element-#player1而不是string-#player1。因此,只需将"#player1"包装在$()中,例如-$("#firstCell").append($("#player1"));

  • 更新代码

    var gameBoard = {
      createBoard: function(dimension, mount) {
        var mount = document.querySelector(mount);
        if (!dimension || isNaN(dimension) || !parseInt(dimension, 10)) {
          return false;
        } else {
          dimension = typeof dimension === 'string' ? parseInt(dimension, 10) : dimension;
          var table = document.createElement('table'),
            row = document.createElement('tr'),
            cell = document.createElement('td'),
            rowClone,
            cellClone;
          var output;
          for (var r = 0; r < dimension; r++) {
            rowClone = row.cloneNode(true);
            table.appendChild(rowClone);
            for (var c = 0; c < dimension; c++) {
              cellClone = cell.cloneNode(true);
              rowClone.appendChild(cellClone);
            }
          }
          mount.appendChild(table);
          output = gameBoard.enumerateBoard(table);
        }
        return output;
      },
      enumerateBoard: function(board) {
        var rows = board.getElementsByTagName('tr'),
          text = document.createTextNode(''),
          rowCounter = 1,
          size = rows.length,
          cells,
          cellsLength,
          cellNumber,
          odd = false,
          control = 0;
        for (var r = size - 1; r >= 0; r--) {
          cells = rows[r].getElementsByTagName('td');
          cellsLength = cells.length;
          rows[r].className = r % 2 == 0 ? 'even' : 'odd';
          odd = ++control % 2 == 0 ? true : false;
          size = rows.length;
          for (var i = 0; i < cellsLength; i++) {
            if (odd == true) {
              cellNumber = --size + rowCounter - i;
            } else {
              cellNumber = rowCounter;
            }
            cells[i].className = i % 2 == 0 ? 'even' : 'odd';
            cells[i].id = cellNumber;
            cells[i].appendChild(text.cloneNode());
            cells[i].firstChild.nodeValue = cellNumber;
            rowCounter++;
          }
        }
        var lastRow = rows[0].getElementsByTagName('td');
        lastRow[0].id = 'lastCell';
        var firstRow = rows[9].getElementsByTagName('td');
        firstRow[0].id = 'firstCell';
        return gameBoard;
      }
    };
    
    window.onload = (function(e) {
      gameBoard.createBoard(10, "#grid");
      move();
    
    });
    
    var face1 = new Image()
    face1.src = "d1.gif"
    var face2 = new Image()
    face2.src = "d2.gif"
    var face3 = new Image()
    face3.src = "d3.gif"
    var face4 = new Image()
    face4.src = "d4.gif"
    var face5 = new Image()
    face5.src = "d5.gif"
    var face6 = new Image()
    face6.src = "d6.gif"
    
    function rollDice() {
      var randomdice = Math.floor(Math.random() * 6) + 1;
      document.images["mydice"].src = eval("face" + randomdice + ".src")
      if (randomdice == 6) {
        alert('Congratulations! You got 6! Roll the dice again');
      }
      return randomdice;
    }
    
    function move() {
      $("#firstCell").append($("#player1"));
    }
    /*body {
        background-image: url('snakesandladder2.png');
        background-repeat: no-repeat;
        background-size: 100%;
        background-color: #4f96cb;
    }*/
    
    table {
      width: 100%;
    }
    td {
      border-radius: 10px;
      width: 60px;
      height: 60px;
      line-height: normal;
      vertical-align: bottom;
      text-align: left;
      border: 0px solid #FFFFFF;
    }
    table tr:nth-child(odd) td:nth-child(even),
    table tr:nth-child(even) td:nth-child(odd) {
      background-color: PowderBlue;
    }
    table tr:nth-child(even) td:nth-child(even),
    table tr:nth-child(odd) td:nth-child(odd) {
      background-color: SkyBlue;
    }
    #game {
      width: 80%;
      margin-left: auto;
      margin-right: auto;
    }
    #gameBoardSection {
      border: 3px inset #0FF;
      border-radius: 10px;
      width: 65%;
      float: left;
    }
    #grid {
      z-index: -1;
    }
    #ladder {
      position: absolute;
      top: 300px;
      left: 470px;
      -webkit-transform: rotate(30deg);
      z-index: 1;
      opacity: 0.7;
    }
    #bigSnake {
      position: absolute;
      top: 20px;
      left: 200px;
      opacity: 0.7;
      z-index: 1;
    }
    #player1 {
      border: 1px;
      border-style: solid;
      position: absolute;
    }
    #diceAndPlayerSection {
      background-color: lightgrey;
      float: left;
      background-size: cover
    }
    #lastCell {
      background-image: url('rotstar2_e0.gif');
      background-repeat: no-repeat;
      background-size: 100%;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="utf-8" />
      <title></title>
      <link href="StyleSheet1.css" rel="stylesheet" />
      <script src="jquery-2.1.4.min.js"></script>
    </head>
    
    <body>
      <div id="game">
        <div id="gameBoardSection">
          <div id="grid"></div>
          <div id="ladder">
            <img src="oie_eRDOY2iqd5oQ.gif" />
          </div>
          <div id="bigSnake">
            <img src="oie_485727sRN4KKBG.png" />
          </div>
          <div id="player1" style="border: 1px; border-style: solid; position:absolute;">
            <!--style="position: absolute; top: 597px; z-index: 1;"-->
            <img src="humanPiece.png" />
          </div>
    
        </div>
        <div id="diceAndPlayerSection">
          <div id="reset">
            <button type="button" name="reset">New Game</button>
          </div>
          <div>
            <button type="button" name="reset">Reset</button>
          </div>
          <div>
            <button type="button" name="addPlayer">Add Player</button>
          </div>
          <div id="diceSection">
            <img src="d1.gif" name="mydice" onclick="rollDice()">
          </div>
        </div>
      </div>
    
      <script src="JavaScript1.js"></script>
    
    </body>
    
    </html>

    关于javascript - 将div附加到td,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34649220/

    10-11 12:53