консоль не будет регистрировать массив div - PullRequest
0 голосов
/ 15 апреля 2019

Я играю в игру "подключайся четыре" и сейчас пытаюсь записать массив каждого div, который находится в определенном столбце доски при нажатии на этот столбец. Я могу войти в массив от первого индекса до последнего. Теперь я не хочу регистрировать массив от последнего индекса до первого. Моя функция выглядит следующим образом.

`function dropChip(col) {
    for(let i = col.length-1; i < col.length; i--) {
        console.log(col[i]);
    }
}`

Что меня смущает, так это то, что я могу перейти на console.log (col); и увидеть все шесть предметов. Но я не могу посмотреть на них с обратной стороны? (Поскольку мне нужно проверить, пуст ли нижний блок, потому что чипы должны быть сложены. Также полезно использовать DOM для игровой логики? Я сделал это таким образом в предыдущая версия, которую я сделал и мне сказали, что это плохой дизайн, но я не знаю другого пути или как сделать это с JS), глядя на них таким образом, ломает игру? Есть идеи, что я делаю не так? спасибо:)

const board = document.querySelectorAll(".slot");

for(let i = 0; i < board.length; i++) {
	board[i].addEventListener('click', selectColumn);
}

function selectColumn(evt) {
	let column = evt.target.id;
	let columnArray = [];

	for(let i=0; i < board.length; i++) {
		if(column === board[i].id) columnArray.push(board[i]);
	}
	dropChip(columnArray);
}

function dropChip(col) {
	for(let i = col.length-1; i < col.length; i--) {
		console.log(col[i]);
	}
}
/** {
	border: 1px solid red;
}*/

*, *:before, *:after {
	box-sizing: inherit;
}

html {
	box-sizing: border-box;
}

html, body {
	margin: 0;
	padding: 0;
}

body {
	display: flex;
	justify-content: flex-end;
	min-height: 100vh;
	background-color: #e6e9ef;
	flex-direction: column;
}

.board-wrapper {
	/*display: flex;*/
	margin: 0 auto;
	padding-top: 100px;
	position: relative;
	overflow: hidden;
}

.board {
	display: flex;
	background-color: #00c;
	flex-wrap: wrap;
	max-width: 706px;
	padding: 3px;
	/*margin: auto;*/
}

.board > div {
	width: 100px;
	height: 100px;
	background-color: blue;
	border: 3px solid #00c;
	cursor: pointer;
	position: relative;
}

.board > div:before {
	content: "";
	position: absolute;
	top: 7px;
	left: 7px;
	background-color: #00c;
	width: 80px;
	height: 80px;
	border-radius: 50%;
	box-shadow: inset 0px 0px 13px #0606aa;

}

.board > div:after {
	content: "";
	position: absolute;
	z-index: 99;
	left: 0;
	right: 0;
	top: -999em;
	bottom: -999em;
	transition: all .5s ease;
	background-color: transparent;
}

.board > div:hover:after {
	background-color: #00c;
}

.board > div.counter {
	/*display: block;
	padding: 0;*/
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	width: auto;
	height: 100px;
	border: none;
	background-color: #e6e9ef;
	z-index: 100;
}

.board > div.counter:after {
	/*content: "";*/
	/*display: block;*/
	/*padding: 0;*/
	height: 80px;
	width: 80px;
	background-color: red;
	top: 0;
	/*left: 0;
	right: auto;*/
	border-radius: 50%;
	transition: transform .5s ease, opacity .2s ease;
	/*transform: translateX(0);*/
	z-index: 100;
	opacity: 0;
}

.board > div.counter:before {
	content: "";
	display: block;
	padding: 0;
	position: absolute;
	top: 15px;
	left: 15px;
	right: auto;
	height: 50px;
	width: 50px;
	border-radius: 50%;
	background-color: red;
	box-shadow: inset 0px 0px 20px #cc0000;
	z-index: 101;
	transition: transform .5s ease, opacity .2s ease;
	/*transform: translateX(0);*/
	opacity: 0;
}

.board > div:nth-of-type(7n+1):hover ~ .counter:after{transform:translateX(14px);opacity: 1;}
.board > div:nth-of-type(7n+2):hover ~ .counter:after{transform:translateX(114px);opacity: 1;}
.board > div:nth-of-type(7n+3):hover ~ .counter:after{transform:translateX(214px);opacity: 1;}
.board > div:nth-of-type(7n+4):hover ~ .counter:after{transform:translateX(314px);opacity: 1;}
.board > div:nth-of-type(7n+5):hover ~ .counter:after{transform:translateX(414px);opacity: 1;}
.board > div:nth-of-type(7n+6):hover ~ .counter:after{transform:translateX(514px);opacity: 1;}
.board > div:nth-of-type(7n+7):hover ~ .counter:after{transform:translateX(614px);opacity: 1;}

.board > div:nth-of-type(7n+1):hover ~ .counter:before{transform:translateX(14px);opacity: 1;}
.board > div:nth-of-type(7n+2):hover ~ .counter:before{transform:translateX(114px);opacity: 1;}
.board > div:nth-of-type(7n+3):hover ~ .counter:before{transform:translateX(214px);opacity: 1;}
.board > div:nth-of-type(7n+4):hover ~ .counter:before{transform:translateX(314px);opacity: 1;}
.board > div:nth-of-type(7n+5):hover ~ .counter:before{transform:translateX(414px);opacity: 1;}
.board > div:nth-of-type(7n+6):hover ~ .counter:before{transform:translateX(514px);opacity: 1;}
.board > div:nth-of-type(7n+7):hover ~ .counter:before{transform:translateX(614px);opacity: 1;}
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Connect Four</title>
	<link rel="stylesheet" href="style.css">
</head>
<body>
	<div class="board-wrapper">
		<div class="board">
			<div class="slot" id="col-1"></div>
			<div class="slot" id="col-2"></div>
			<div class="slot" id="col-3"></div>
			<div class="slot" id="col-4"></div>
			<div class="slot" id="col-5"></div>
			<div class="slot" id="col-6"></div>
			<div class="slot" id="col-7"></div>
			<div class="slot" id="col-1"></div>
			<div class="slot" id="col-2"></div>
			<div class="slot" id="col-3"></div>
			<div class="slot" id="col-4"></div>
			<div class="slot" id="col-5"></div>
			<div class="slot" id="col-6"></div>
			<div class="slot" id="col-7"></div>
			<div class="slot" id="col-1"></div>
			<div class="slot" id="col-2"></div>
			<div class="slot" id="col-3"></div>
			<div class="slot" id="col-4"></div>
			<div class="slot" id="col-5"></div>
			<div class="slot" id="col-6"></div>
			<div class="slot" id="col-7"></div>
			<div class="slot" id="col-1"></div>
			<div class="slot" id="col-2"></div>
			<div class="slot" id="col-3"></div>
			<div class="slot" id="col-4"></div>
			<div class="slot" id="col-5"></div>
			<div class="slot" id="col-6"></div>
			<div class="slot" id="col-7"></div>
			<div class="slot" id="col-1"></div>
			<div class="slot" id="col-2"></div>
			<div class="slot" id="col-3"></div>
			<div class="slot" id="col-4"></div>
			<div class="slot" id="col-5"></div>
			<div class="slot" id="col-6"></div>
			<div class="slot" id="col-7"></div>
			<div class="slot" id="col-1"></div>
			<div class="slot" id="col-2"></div>
			<div class="slot" id="col-3"></div>
			<div class="slot" id="col-4"></div>
			<div class="slot" id="col-5"></div>
			<div class="slot" id="col-6"></div>
			<div class="slot" id="col-7"></div>
			<div class="counter"></div>
		</div>
	</div>
	<script src="script.js"></script>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Вы хотите изменить цикл for:

for (let i = 0; i < col.length; i++) {...}
0 голосов
/ 15 апреля 2019

Посмотрите на эту строку:

    for(let i = col.length-1; i < col.length; i--) {

Я начинаю с максимума и спускаюсь до бесконечности ... Условие остановки не должно быть i < col.length (что всегда будет истинным) - вы хотите, чтобы оно остановилось, когда достигнут последний столбец (индекс ноль)!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...