簡體   English   中英

JavaScript中的可點擊電路板(網格)

[英]Clickable board (grid) in JavaScript

我正在嘗試使用JavaScript和HTML為游戲創建一個可點擊的棋盤(網格)。 到目前為止,我設法創建的唯一的東西是網格,但我無法使其可點擊(交互式)。 到目前為止,這就是我所擁有的:[ https://i.stack.imgur.com/hoOCI.jpg] [1 ]

它的代碼如下:

HTML(game.html):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Game</title>
    <link rel="stylesheet" href="game.css">
</head>
<body>
   <script src="game.js"></script>
</body>
</html>

CSS(game.css):

*{
padding: 0;
margin: 0;
}

body{
background-color: bisque;
}

td{
width: 40px;
height: 40px;
}

.blank{
background-color: white;
}

.userSubmarine{
background-color: red;
}

.wall{
background-color: green;
}

.killerSubmarine{
background-color: blue;
}

.fuel{
background-color: yellow;
}

.obstacle{
background-color: purple;
}

JavaScript(game.js):

var height = 12;
var width = 12;
var turn;
var numUserSubmarines = 0;
var numKillerSubmarines = 0;
var numFuel = 0;
var numObstacles = 0;
var running = false;
var gameOver = false;


//entry point

 function run(){
init();
}

function init(){
createGrid();
}

//generate the grid

function createGrid(){

document.write("<table>");

for (var y = 0; y < height; y++){
    document.write("<tr>");
    for (var x = 0; x < width; x++){
        if(x == 0 || x == width - 1 || y == 0 || y == height - 1){
            document.write("<td class = 'wall' id = "+ x + "-" + y +"></td>");

        }else{
            document.write("<td class = 'blank' id = "+ x + "-" + y +"></td>");
        }
    }
    document.write("</tr>");
}

document.write("</table>");

}


run();

因此,我希望能夠點擊網格的任何方格(白色方塊),並且在從鍵盤按“k”后,方塊必須將其顏色更改為紅色。 有什么建議?

試試這個:

  var height = 12; var width = 12; var turn; var numUserSubmarines = 0; var numKillerSubmarines = 0; var numFuel = 0; var numObstacles = 0; var running = false; var gameOver = false; //entry point function run() { init(); } function init() { createGrid(); } //generate the grid function createGrid() { document.write("<table>"); for (var y = 0; y < height; y++) { document.write("<tr>"); for (var x = 0; x < width; x++) { if (x == 0 || x == width - 1 || y == 0 || y == height - 1) { document.write("<td class = 'wall' id = " + x + "-" + y + " onclick='alert(\\"" + x + "-" + y + "\\")'></td>"); } else { document.write("<td class = 'blank' id = " + x + "-" + y + " onclick='alert(\\"" + x + "-" + y + "\\")'></td>"); } } document.write("</tr>"); } document.write("</table>"); } run(); 
 *{ padding: 0; margin: 0; } body{ background-color: bisque; } td{ width: 40px; height: 40px; } .blank{ background-color: white; } .userSubmarine{ background-color: red; } .wall{ background-color: green; } .killerSubmarine{ background-color: blue; } .fuel{ background-color: yellow; } .obstacle{ background-color: purple; } 

我希望這個幫助:)

如果要將函數綁定到由javascript創建的元素,則必須使用addEventListener 下面的代碼為body添加了一個表,您可以單擊每個單元格並選擇它,並且使用keydown,所選單元格將變為紅色。

 function CreateGrid(width, height) { var clickedCell; var body = document.getElementsByTagName("body")[0]; var myTable = document.createElement('table'); body.appendChild(myTable); window.addEventListener('keydown', function () { clickedCell.style.backgroundColor = "red"; }); for (var i = 0; i < height; i++) { var row = myTable.insertRow(i); for (var j = 0; j < width; j++) { var cell = row.insertCell(j); cell.innerHTML = "Cell" + j; cell.addEventListener('click', function (e) { clickedCell = e.target; }); } } } CreateGrid(6, 3); 
 td{cursor: pointer;} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM