Как сделать чтобы все кнопки меняли цвет а не только одна при нажатии на стрелку в право?
let Input = document.querySelector('.num');
let Ac = document.querySelector('.ac');
let Btns = document.querySelector('.buttons');
let Left = document.querySelector('.btn_left');
let Rigth = document.querySelector('.btn_rigth');
let Cont = document.getElementById('cnt');
let Btn = document.querySelector('.btn');
Left.disabled = true;
let finish = false;
let OneNumber = "";
let SecondNumber = "";
let OperationBtn = "";
const numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."];
const operations = ["+", "-", "*", "/"];
function clearAll() {
OneNumber = "";
SecondNumber = "";
OperationBtn = "";
finish = false;
Input.textContent = "0";
}
Ac.addEventListener("click", clearAll);
Btns.addEventListener("click", CalcStart);
function CalcStart(e) {
let key = event.target.textContent;
if (numbers.includes(key)) {
if (SecondNumber == "" && OperationBtn == "") {
OneNumber += key;
Input.textContent = OneNumber;
} else if (OneNumber !== "" && SecondNumber !== "" && finish) {
SecondNumber = key;
Input.textContent = SecondNumber;
finish = false;
} else {
SecondNumber += key;
Input.textContent = SecondNumber;
}
}
if (operations.includes(key)) {
if (OneNumber !== "") {
OperationBtn = key;
Input.textContent = OperationBtn;
}
}
if (key == "=") {
if (OperationBtn == "+") {
OneNumber = +OneNumber + +SecondNumber;
}
if (OperationBtn == "-") {
OneNumber = OneNumber - SecondNumber;
}
if (OperationBtn == "*") {
OneNumber = OneNumber * SecondNumber;
}
if (OperationBtn == "/") {
OneNumber = OneNumber / SecondNumber;
}
if (OneNumber == Infinity) {
OneNumber = "Error";
}
Input.textContent = OneNumber;
finish = true;
}
}
Rigth.addEventListener("click", function (e) {
Cont.className = "theme";
Btn.className = "themebtn";
Input.className = "themenum";
})
.container {
}
.content {
display: grid;
grid-template-areas:
"display"
"buttons buttons";
width: 220px;
height: 320px;
justify-content: center;
align-content: center;
background-color: black;
border-radius: 10px;
}
.buttons {
display: grid;
grid-template-areas:
"numeral operation";
grid-template-columns: 160px 40px;
justify-content: center;
}
.numeral {
display: grid;
grid-template-columns: 40px 40px 40px;
grid-template-rows: 40px 40px 40px 40px 40px;
grid-gap: 10px;
}
.operation {
display: grid;
grid-template-columns: 40px;
grid-template-rows: 40px 40px 40px 40px;
grid-row-gap: 10px;
}
.btn {
background-color: #333;
color: white;
border-radius: 100%;
}
.display {
width: 200px;
text-align: end;
margin: 0 auto;
font-size: 35px;
}
.num {
margin: 10px 10px 10px 10px;
color: white;
}
.slide {
width: 60px;
margin: 0 auto;
margin-bottom: 10px;
}
.slide button {
border-radius: 100%;
}
.theme {
display: grid;
grid-template-areas:
"display"
"buttons buttons";
width: 220px;
height: 320px;
justify-content: center;
align-content: center;
background-color: white;
border-radius: 10px;
border: solid 3px #333;
}
.themebtn {
background-color: black;
color: white;
border-radius: 100%;
}
.themenum {
margin: 10px 10px 10px 10px;
color: black;
background-color: #333;
border-radius: 10px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="container">
<div id="cnt" class="content">
<div class="display">
<p class="num">0</p>
</div>
<div class="buttons">
<div class="numeral">
<button class="btn one">1</button>
<button class="btn two">2</button>
<button class="btn three">3</button>
<button class="btn four">4</button>
<button class="btn five">5</button>
<button class="btn six">6</button>
<button class="btn seven">7</button>
<button class="btn eight">8</button>
<button class="btn nine">9</button>
<button class="btn zero">0</button>
<button class="btn eq">=</button>
<button class="btn ac">ac</button>
<button class="btn dot">.</button>
</div>
<div class="operation">
<button class="btn multiply">*</button>
<button class="btn devide">/</button>
<button class="btn plus">+</button>
<button class="btn minus">-</button>
</div>
</div>
<div class="slide">
<button class="btn_left"><</button>
<button class="btn_rigth">></button>
</div>
</div>
</div>
<script src="my.js" type="text/javascript"></script>
</body>
</html>
Ответы (1 шт):
Автор решения: Oliver Patterson
→ Ссылка
let Btn = document.querySelector('.btn'); - тут вы берете только одну кнопку, чтобы выбрать все, нужно воспользоваться querySelectorAll, так мы получим NodeList, по которому нужно будет пройтись с помощью .forEach и сделать нужные действия.
let Input = document.querySelector('.num');
let Ac = document.querySelector('.ac');
let Btns = document.querySelector('.buttons');
let Left = document.querySelector('.btn_left');
let Rigth = document.querySelector('.btn_rigth');
let Cont = document.getElementById('cnt');
const BtnList = document.querySelectorAll('.btn');
Left.disabled = true;
let finish = false;
let OneNumber = "";
let SecondNumber = "";
let OperationBtn = "";
const numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."];
const operations = ["+", "-", "*", "/"];
function clearAll() {
OneNumber = "";
SecondNumber = "";
OperationBtn = "";
finish = false;
Input.textContent = "0";
}
Ac.addEventListener("click", clearAll);
Btns.addEventListener("click", CalcStart);
function CalcStart(e) {
let key = event.target.textContent;
if (numbers.includes(key)) {
if (SecondNumber == "" && OperationBtn == "") {
OneNumber += key;
Input.textContent = OneNumber;
} else if (OneNumber !== "" && SecondNumber !== "" && finish) {
SecondNumber = key;
Input.textContent = SecondNumber;
finish = false;
} else {
SecondNumber += key;
Input.textContent = SecondNumber;
}
}
if (operations.includes(key)) {
if (OneNumber !== "") {
OperationBtn = key;
Input.textContent = OperationBtn;
}
}
if (key == "=") {
if (OperationBtn == "+") {
OneNumber = +OneNumber + +SecondNumber;
}
if (OperationBtn == "-") {
OneNumber = OneNumber - SecondNumber;
}
if (OperationBtn == "*") {
OneNumber = OneNumber * SecondNumber;
}
if (OperationBtn == "/") {
OneNumber = OneNumber / SecondNumber;
}
if (OneNumber == Infinity) {
OneNumber = "Error";
}
Input.textContent = OneNumber;
finish = true;
}
}
Rigth.addEventListener("click", function (e) {
Cont.classList.toggle("theme");
BtnList.forEach((btn) => btn.classList.toggle("themebtn"));
Input.classList.toggle("themenum");
})
.container {
}
.content {
display: grid;
grid-template-areas:
"display"
"buttons buttons";
width: 220px;
height: 320px;
justify-content: center;
align-content: center;
background-color: black;
border-radius: 10px;
}
.buttons {
display: grid;
grid-template-areas:
"numeral operation";
grid-template-columns: 160px 40px;
justify-content: center;
}
.numeral {
display: grid;
grid-template-columns: 40px 40px 40px;
grid-template-rows: 40px 40px 40px 40px 40px;
grid-gap: 10px;
}
.operation {
display: grid;
grid-template-columns: 40px;
grid-template-rows: 40px 40px 40px 40px;
grid-row-gap: 10px;
}
.btn {
background-color: #333;
color: white;
border-radius: 100%;
}
.display {
width: 200px;
text-align: end;
margin: 0 auto;
font-size: 35px;
}
.num {
margin: 10px 10px 10px 10px;
color: white;
}
.slide {
width: 60px;
margin: 0 auto;
margin-bottom: 10px;
}
.slide button {
border-radius: 100%;
}
.theme {
display: grid;
grid-template-areas:
"display"
"buttons buttons";
width: 220px;
height: 320px;
justify-content: center;
align-content: center;
background-color: white;
border-radius: 10px;
border: solid 3px #333;
}
.themebtn {
background-color: black;
color: white;
border-radius: 100%;
}
.themenum {
margin: 10px 10px 10px 10px;
color: black;
background-color: #333;
border-radius: 10px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="container">
<div id="cnt" class="content">
<div class="display">
<p class="num">0</p>
</div>
<div class="buttons">
<div class="numeral">
<button class="btn one">1</button>
<button class="btn two">2</button>
<button class="btn three">3</button>
<button class="btn four">4</button>
<button class="btn five">5</button>
<button class="btn six">6</button>
<button class="btn seven">7</button>
<button class="btn eight">8</button>
<button class="btn nine">9</button>
<button class="btn zero">0</button>
<button class="btn eq">=</button>
<button class="btn ac">ac</button>
<button class="btn dot">.</button>
</div>
<div class="operation">
<button class="btn multiply">*</button>
<button class="btn devide">/</button>
<button class="btn plus">+</button>
<button class="btn minus">-</button>
</div>
</div>
<div class="slide">
<button class="btn_left"><</button>
<button class="btn_rigth">></button>
</div>
</div>
</div>
<script src="my.js" type="text/javascript"></script>
</body>
</html>
Но я на вашем месте лучше бы добавлял класс контейнеру и уже в зависимости от этого класса через css назначал бы стили для всего, что нужно изменить.