Причина, по которой вы получаете только два квадрата:
document.getElementById
возвращает существующий элемент ;элемент, который уже существует.В своем HTML вы создали только 2 квадрата и больше никогда его не создаете.
Я думаю, что каждый раз, когда вы используете document.getElementById
, вы пытаетесь создать новый квадрат.
Вы должны использовать document.createElement
вместо document.getElementById
для создания новых элементов.
Итак, шаги для решения вашей проблемы:
id
s должен быть уникальным.Вместо этого используйте стиль class
es (чтобы иметь более 1 белого квадрата и более 1 черного квадрата):
.whiteSquare{
width: 60px;
height: 60px;
background-color: white;
}
.blackSquare{
width: 60px;
height: 60px;
background-color: black;
}
Удалите начальные элементы <div id="whiteSquare">
и <div id="blackSquare">
из вашего HTML.Мы создадим их в JavaScript.
Замените
for(var i = 1; i <= board.length; i++){
if(i % 2 == 0){
document.getElementById("whiteSquare");
}else{
document.getElementById("blackSquare");
}
}
на
for (var i = 0; i < board.length; i++) {
var square = document.createElement("div");
if (i / 8 % 2 < 1) {
if (i % 2 == 0) square.classList.add("whiteSquare");
else square.classList.add("blackSquare");
} else {
if (i % 2 == 0) square.classList.add("blackSquare");
else square.classList.add("whiteSquare");
}
document.getElementById("gameBoardBorder").appendChild(square);
}
Чтобы получить квадраты дляотображать в нужных местах, вам нужно добавить display: inline-block;
к их стилям.
Чтобы избавиться от разрыва между рядами квадратов, установите правило стиля line-height: 0;
на#gameBoardBorder
Примечание. Я поставил все квадраты внутри из #gameBoardBoarder
.
function drawBoard() {
var board = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
];
for (var i = 0; i < board.length; i++) {
var square = document.createElement("div");
if (i / 8 % 2 < 1) {
if (i % 2 == 0) square.classList.add("whiteSquare");
else square.classList.add("blackSquare");
} else {
if (i % 2 == 0) square.classList.add("blackSquare");
else square.classList.add("whiteSquare");
}
document.getElementById("gameBoardBorder").appendChild(square);
}
}
#gameBoardBorder {
width: 480px;
height: 480px;
border: solid;
border-color: black;
border-width: 2px;
float: left;
line-height: 0;
}
#gameBoardBorder > * {
margin: 0;
padding: 0;
}
h1 {
text-align: center;
font-family: sans-serif;
}
.whiteSquare {
display: inline-block;
width: 60px;
height: 60px;
background-color: white;
}
.blackSquare {
display: inline-block;
width: 60px;
height: 60px;
background-color: black;
}
body {
background-color: lightblue;
}
<body onload="drawBoard()">
<h1>Chess Board</h1>
<div id="gameBoardBorder">
<!-- Noting more needed to be done here, rest will be in the css -->
</div>
</body>