const buttons = document.querySelectorAll('button');
let playerTurn = 'X';
function runGame() {
//for(i=0; i<9; i++) {
buttons[0].addEventListener('click', function() {
buttons[0].innerHTML = playerTurn;
})
}body {
background-color: coral;
}
h1 {
font-family: 'Lobster';
font-size: 1.9rem;
text-align: center;
}
button {
width: 100px;
height: 100px;
position: relative;
left: 35px;
top: 35px;
background-color: coral;
border: none;
margin: 4px;
transition-duration: 500ms;
outline: none;
cursor: pointer;
}
button:hover {
background-color: black;
}
.game-box {
background-color: black;
width: 400px;
height: 400px;
border-radius: 10%;
margin: auto;
}
.shave-left-top {
border-top-left-radius: 10%;
}
.shave-right-top {
border-top-right-radius: 10%;
}
.shave-left-bottom {
border-bottom-left-radius: 10%;
}
.shave-right-bottom {
border-bottom-right-radius: 10%;
}<!DOCTYPE html>
<html>
<head>
<title>javaScript Tic Tac Toe</title>
<link href = "https://fonts.googleapis.com/css?family=Lobster" rel = "stylesheet">
<link rel = "stylesheet" type = "text/css" href = "style.css">
<meta charset = "utf-8">
</head>
<body>
<h1>javascript Tic Tac Toe</h1>
<div class = "game-box">
<div class = "row-1">
<input type = "button" name = ""> class = "shave-left-top" onclick = "runGame();"></button>
<button onclick = "runGame();"></button>
<button class = "shave-right-top" onclick = "runGame();"></button>
</div>
<div class = "row-2">
<button onclick = "runGame();"></button>
<button onclick = "runGame();"></button>
<button onclick = "runGame();"></button>
</div>
<div class = "row-3">
<button class = "shave-left-bottom" onclick = "runGame();"></button>
<button onclick = "runGame();"></button>
<button class = "shave-right-bottom" onclick = "runGame();"></button>
</div>
</div>
<script type = "text/javascript" src = "script2.js"></script>
</body>
</html>Я пытаюсь сделать простую игру в крестики-нолики на javascript. В настоящее время я пытаюсь нажать кнопку, чтобы изменить и отобразить ее значение, но это не работает так, как я хочу. Если вы хотите посмотреть, почему это можно сделать, не стесняйтесь, но главный вопрос связан с кнопкой. Когда по нему щелкают, он перемещается на 40 пикселей вниз, как это отключить без использования атрибута disable.
Вы рассматривали нет с использованием button? Может быть, установка слушателя на div сработает для вас ...
О какой движущейся кнопке вы говорите?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


это можно исправить, установив float left на кнопку
const buttons = document.querySelectorAll('button');
let playerTurn = 'X';
function runGame() {
//for(i=0; i<9; i++) {
buttons[0].addEventListener('click', function() {
buttons[0].innerHTML = playerTurn;
})
}body {
background-color: coral;
}
h1 {
font-family: 'Lobster';
font-size: 1.9rem;
text-align: center;
}
button {
width: 100px;
height: 100px;
position: relative;
left: 35px;
top: 35px;
background-color: coral;
border: none;
margin: 4px;
transition-duration: 500ms;
outline: none;
cursor: pointer;
float: left;
}
.row-1:after,.row-2:after,.row-3:after {
content: " ";
display: block;
clear: both;
}
button:hover {
background-color: black;
}
.game-box {
background-color: black;
width: 400px;
height: 400px;
border-radius: 10%;
margin: auto;
}
.shave-left-top {
border-top-left-radius: 10%;
}
.shave-right-top {
border-top-right-radius: 10%;
}
.shave-left-bottom {
border-bottom-left-radius: 10%;
}
.shave-right-bottom {
border-bottom-right-radius: 10%;
}<!DOCTYPE html>
<html>
<head>
<title>javaScript Tic Tac Toe</title>
<link href = "https://fonts.googleapis.com/css?family=Lobster" rel = "stylesheet">
<link rel = "stylesheet" type = "text/css" href = "style.css">
<meta charset = "utf-8">
</head>
<body>
<h1>javascript Tic Tac Toe</h1>
<div class = "game-box">
<div class = "row-1">
<input type = "button" name = ""> class = "shave-left-top" onclick = "runGame();"></button>
<button onclick = "runGame();"></button>
<button class = "shave-right-top" onclick = "runGame();"></button>
</div>
<div class = "row-2">
<button onclick = "runGame();"></button>
<button onclick = "runGame();"></button>
<button onclick = "runGame();"></button>
</div>
<div class = "row-3">
<button class = "shave-left-bottom" onclick = "runGame();"></button>
<button onclick = "runGame();"></button>
<button class = "shave-right-bottom" onclick = "runGame();"></button>
</div>
</div>
<script type = "text/javascript" src = "script2.js"></script>
</body>
</html>В CSS добавлен float: left.
Я немного изменил JavaScript. После нажатия каждой кнопки кнопки теряют свой прослушиватель щелчков, так как они не нажимаются дважды, и playerTurn поменяется местами.
const buttons = document.querySelectorAll('button');
let playerTurn = 'X';
for (i = 0; i < 9; i++) {
buttons[i].addEventListener('click', runGame, false)
}
function runGame(event){
playerTurn = playerTurn == 'X' ? 'O' : 'X';
event.target.innerHTML = playerTurn;
event.target.removeEventListener('click', runGame);
}body {
background-color: coral;
}
h1 {
font-family: 'Lobster';
font-size: 1.9rem;
text-align: center;
}
button {
width: 100px;
height: 100px;
position: relative;
background-color: coral;
border: none;
margin: 4px;
transition-duration: 500ms;
outline: none;
cursor: pointer;
float: left;
}
button:hover {
background-color: #ff6d6d;
}
.game-box {
background-color: black;
width: 325px;
height: 325px;
border-radius: 10%;
margin: auto;
padding: 35px;
}
.shave-left-top {
border-top-left-radius: 10%;
}
.shave-right-top {
border-top-right-radius: 10%;
}
.shave-left-bottom {
border-bottom-left-radius: 10%;
}
.shave-right-bottom {
border-bottom-right-radius: 10%;
} <title>javaScript Tic Tac Toe</title>
<link href = "https://fonts.googleapis.com/css?family=Lobster" rel = "stylesheet">
<link rel = "stylesheet" type = "text/css" href = "style.css">
<meta charset = "utf-8">
<h1>javascript Tic Tac Toe</h1>
<div class = "game-box">
<div class = "row-1">
<button class = "shave-left-top"></button>
<button></button>
<button class = "shave-right-top"></button>
</div>
<div class = "row-2">
<button></button>
<button></button>
<button></button>
</div>
<div class = "row-3">
<button class = "shave-left-bottom"></button>
<button></button>
<button class = "shave-right-bottom"></button>
</div>
</div>
<script type = "text/javascript" src = "script2.js"></script>
</body>
</html>
Не видите "движущихся" кнопок при запуске фрагмента ..?