Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Когда должно 100% работать а не работает. (https://javascript.ru/forum/dom-window/79810-kogda-dolzhno-100%25-rabotat-ne-rabotaet.html)

Сергей Ракипов 28.03.2020 09:17

Когда должно 100% работать а не работает.
 
<p>Мини-игра "Угадай число"</p>
<p>Введите число 
<input type="text">
</p>
<button class="btn">Угадать</button>
<p id="out"></p>


let btn = document.querySelector(".btn");
let out = document.querySelector("#out");
let randomNum = Math.floor(Math.random()*10);
let count = 3;


console.log(randomNum);


btn.onclick = guess;


function guess(){
let inputNum = document.querySelector("input").value;
inputNum = parseInt(inputNum.value);
	if(inputNum.value < randomNum){
		out.innerHTML = "Больше";
	}
	else if(inputNum.value > randomNum){
		out.innerHTML = "Меньше";
	}
	else {
		out.innerHTML = "Вы угадали";
	}

}

Сергей Ракипов 28.03.2020 09:18

Не могу понять почему не работает.

рони 28.03.2020 09:25

Сергей Ракипов,
у метода value не бывает метода value!
и нет проверки на NaN

Сергей Ракипов 28.03.2020 09:34

Цитата:

Сообщение от рони (Сообщение 521860)
Сергей Ракипов,
у метода value не бывает метода value!
и нет проверки на NaN

value
Это я уже в отчаяние начал пробовать все что не попадя, понимая что какой то бред.
Про Nan я еще не знаю, но сейчас почитаю

Сергей Ракипов 28.03.2020 09:44

Цитата:

Сообщение от рони (Сообщение 521860)
Сергей Ракипов,
у метода value не бывает метода value!
и нет проверки на NaN

function guess(){
let inputNum = document.querySelector("input").value;
inputNum = parseInt(inputNum.value);
	if (!isNaN(inputNum) && inputNum>=0 && inputNum <=10){
		if(inputNum == randomNum){
			out.innerHTML = "Вы угадали";
		}
		else if(inputNum != randomNum){
			out.innerHTML = "Вы не угадали";
		}
	}
}


Вроде сейчас все сделал, все равно не работает

И я не понимаю зачем проверку на Nan

рони 28.03.2020 09:50

Сергей Ракипов,
строка 3.
Цитата:

Сообщение от рони
у метода value не бывает метода value!


рони 28.03.2020 09:51

Сергей Ракипов,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<p>Мини-игра "Угадай число"</p>
<p>Введите число
<input type="text">
</p>
<button class="btn">Угадать</button>
<p id="out"></p>
<script>
let btn = document.querySelector(".btn");
let out = document.querySelector("#out");
let randomNum = Math.floor(Math.random()*10);
let count = 3;
console.log(randomNum);
btn.onclick = guess;
function guess(){
let inputNum = document.querySelector("input").value;
inputNum = parseInt(inputNum);
    if(isNaN(inputNum)){
		out.innerHTML = "Введите число";
	}
	else if(inputNum < randomNum){
		out.innerHTML = "Больше";
	}
	else if(inputNum > randomNum){
		out.innerHTML = "Меньше";
	}
	else {
		out.innerHTML = "Вы угадали";
	}
}
</script>
</body>
</html>

Сергей Ракипов 28.03.2020 09:52

Цитата:

Сообщение от рони (Сообщение 521865)
Сергей Ракипов,
строка 3.

Не заметил, спасибо.

А зачем я проверяю на Nan почему не досточно что я перевел все цифры.

рони 28.03.2020 09:55

Цитата:

Сообщение от Сергей Ракипов
А зачем

можно ничего не ввести и нажать кнопку, а можно ввести не число.

Сергей Ракипов 28.03.2020 10:04

Цитата:

Сообщение от рони (Сообщение 521869)
можно ничего не ввести и нажать кнопку, а можно ввести не число.

Спасибо

Сергей Ракипов 28.03.2020 10:56

Почему у меня не остановился счетчик

let btn = document.querySelector(".btn");
let out = document.querySelector("#out");
let randomNum = Math.round(Math.random()*10);
let remained = document.querySelector("#remained")
remained.innerHTML = "Количество попыток 3";
let count = 3;


console.log(randomNum);


btn.onclick = guess;


function guess(){
let inputNum = document.querySelector("input").value;
inputNum = parseInt(inputNum);
	if (!isNaN(inputNum) && inputNum>=0 && inputNum <=10){
		if(inputNum < randomNum || count>=0){
			out.innerHTML = "Больше";
			count--;
			remained.innerHTML = "Осталось поптыток: " + count;
		}
		else if(inputNum > randomNum || count>=0){
			out.innerHTML = "Меньше";
			count--;
			remained.innerHTML = "Осталось поптыток: " + count;
		}
		else if (inputNum == randomNum){
			out.innerHTML = "Вы угадали";
			setTimeout(function(){
				location.reload();
			}, 2000)
		}
		else if (count<=0){
			remained.innerHTML = "Вы проиграли";
			setTimeout(function(){
				location.reload();
			}, 2000)
		}
	}
}

рони 28.03.2020 13:37

Сергей Ракипов,
условие в строках 19 и 24 не или || , а и &&.

Сергей Ракипов 29.03.2020 06:18

Цитата:

Сообщение от рони (Сообщение 521873)
Сергей Ракипов,
условие в строках 19 и 24 не или || , а и &&.

Спасибо, еще пока правила и главное синтаксис не могу запомнить.

Сергей Ракипов 30.03.2020 10:40

let radioCheck = document.querySelectorAll(".radio");
let outConsol = document.querySelector(".out_console");

function consl(){
	for(let i=0; i<radioCheck.length; i++){
		if(radioCheck[i].checked){
			outConsol.innerHTML = "Ваша консоль- " + radioCheck[i].value;
		}
	}
}

consl();


Все вроде правильно, но не работает.

рони 30.03.2020 11:15

Сергей Ракипов,
делайте полноценный пример.
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>
<body>
<input type="radio" value="1" class="radio" name="test">
<input type="radio" value="2" class="radio" name="test" checked="checked">
<input type="radio" value="3" class="radio" name="test">
<input type="radio" value="4" class="radio" name="test">
<input type="radio" value="5" class="radio" name="test">
<div class="out_console"></div>
<script>
let radioCheck = document.querySelectorAll(".radio");
let outConsol = document.querySelector(".out_console");

function consl(){
    for(let i=0; i<radioCheck.length; i++){
        if(radioCheck[i].checked){
            outConsol.innerHTML  = "Ваша консоль- " + radioCheck[i].value;
        }
    }
}

consl();

  </script>
</body>
</html>

Пожалуйста, отформатируйте свой код!


[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Сергей Ракипов 30.03.2020 11:24

Я просто не вставляю весь кода, думаю зачем людей лишними символами перегружать

Но буду иметь виду

И я увидел что вы поставили выбор

<input type="radio" value="2" class="radio" name="test" checked="checked">


А у меня этого checked="checked" нет и не надо, мне нужно что бы скрипт отслеживал выбор который сделан пользователем

Сергей Ракипов 30.03.2020 11:30

Нашел что нужно какой то change но куда его вставить не пойму

рони 30.03.2020 11:40

Сергей Ракипов,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>
<body>
<input type="radio" value="1" class="radio" name="test">
<input type="radio" value="2" class="radio" name="test" checked="checked">
<input type="radio" value="3" class="radio" name="test">
<input type="radio" value="4" class="radio" name="test">
<input type="radio" value="5" class="radio" name="test">
<div class="out_console"></div>
<script>
let radioCheck = document.querySelectorAll(".radio");
let outConsol = document.querySelector(".out_console");
const checkedShow = function() {
    outConsol.innerHTML = "Ваша консоль - " + this.value;
}
function consl(){
    for(let i=0; i<radioCheck.length; i++){
        radioCheck[i].addEventListener("change", checkedShow);
        if(radioCheck[i].checked){
           checkedShow.bind(radioCheck[i])()
        }
    }
}

consl();

  </script>
</body>
</html>

Сергей Ракипов 30.03.2020 17:19

Цитата:

Сообщение от рони (Сообщение 521910)
Сергей Ракипов,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>
<body>
<input type="radio" value="1" class="radio" name="test">
<input type="radio" value="2" class="radio" name="test" checked="checked">
<input type="radio" value="3" class="radio" name="test">
<input type="radio" value="4" class="radio" name="test">
<input type="radio" value="5" class="radio" name="test">
<div class="out_console"></div>
<script>
let radioCheck = document.querySelectorAll(".radio");
let outConsol = document.querySelector(".out_console");
const checkedShow = function() {
    outConsol.innerHTML = "Ваша консоль - " + this.value;
}
function consl(){
    for(let i=0; i<radioCheck.length; i++){
        radioCheck[i].addEventListener("change", checkedShow);
        if(radioCheck[i].checked){
           checkedShow.bind(radioCheck[i])()
        }
    }
}

consl();

  </script>
</body>
</html>

Я могу скопировать и дальше делать код, но желание понять огромное, можете в двух словах

Зачем констатнат? и у меня не будет по умолчанию не чего выбрано.
И там есть еще какие то значение

рони 30.03.2020 17:38

Цитата:

Сообщение от Сергей Ракипов
и у меня не будет по умолчанию не чего выбрано.

уберите строки 25 - 27.
вместо const checkedShow = function() {

можно
function checkedShow() {

рони 30.03.2020 18:59

Сергей Ракипов,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<input type="radio" value="1" class="radio" name="test">
<input type="radio" value="2" class="radio" name="test">
<input type="radio" value="3" class="radio" name="test">
<input type="radio" value="4" class="radio" name="test">
<input type="radio" value="5" class="radio" name="test">
<div class="out_console"></div>
<script>
let radioCheck = document.querySelectorAll(".radio");
let outConsol = document.querySelector(".out_console");
radioCheck.forEach(input => input.addEventListener("change", () => outConsol.innerHTML = `Ваша консоль - ${input.value}`));
  </script>
</body>
</html>

Сергей Ракипов 31.03.2020 07:50

Я вот как написал
let radioCheck = document.querySelectorAll(".radio");
let outConsol = document.querySelector(".out_console");


function checkedShow() {
    outConsol.innerHTML = "Ваша консоль: " + this.value;
}

function consl(){
    for(let i=0; i<radioCheck.length; i++){
        radioCheck[i].addEventListener("change", checkedShow);
    }
}

consl();


И мне понятно, что есть функция которая выводит актуальное значение валье, и есть функция которая перебирает значение и слушает любое событие, и если произошло изменение то запускает функцию

radioCheck.forEach(input => input.addEventListener("change", () => outConsol.innerHTML = `Ваша консоль - ${input.value}`));


а вот это мне не очень понятно, но напоминает стрелочные функции, я один урок видел но пока не вникал

рони 31.03.2020 08:14

Сергей Ракипов,
Перебор: forEach

Сергей Ракипов 31.03.2020 13:58

<main>
		<div class="game_console">
			Выберите консоль: <br><br>
			
			<div class="align_game">
				<input type="radio" name="console" class="radio" id="ps4" value="PS4"><div class="stlradio"></div><div class="name"> <label for="ps4">PS4</label></div>
			</div>
			
			<div class="align_game">
				<input type="radio" name="console" class="radio" id="xbox" value="X-box"> <div class="stlradio"></div><div class="name"> <label for="xbox">X-box</label></div>
			</div>
			
			<div class="align_game">
				<input type="radio" name="console" class="radio" id="nindendo" value="Nindendo"><div class="stlradio"></div><div class="name"> <label for="nindendo">Nindendo</label></div>
			</div>
			
		</div>
		<br>
		<div class="out_console"></div><br>
		<div class="out_select_game"></div>
		<br><br>
		<div class="out_game"></div>
		<br>
		<div class="all_game">
			<div class="game_ps">
				<label for="game_1">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_1" value="God of War"><div class="stlchek"></div><div class="name"> God of War</div>
				</div>
				</label>
				<label for="game_2">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_2" value="Uncharted 4"> <div class="stlchek"></div><div class="name"> Uncharted 4</div>
				</div>
				</label>
				<label for="game_3">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_3" value="BloodBorne"><div class="stlchek"></div><div class="name"> BloodBorne</div>
				</div>
				</label>
			</div>
			<div class="game_xb">
				<label for="game_4">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_4" value="Gears 5"><div class="stlchek"></div> <div class="name">Gears 5</div>
				</div>
				</label>
				<label for="game_5">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_5" value="Halo Infinite"><div class="stlchek"></div> <div class="name">Halo Infinite</div>
				</div>
				</label>
				<label for="game_6">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_6" value="Cuphead"><div class="stlchek"></div><div class="name"> Cuphead</div>
				</div>
				</label>
			</div>
			<div class="game_nin">
				<label for="game_7">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_7" value="Zelda"><div class="stlchek"></div><div class="name"> Zelda</div>
				</div>
				</label>
				<label for="game_8">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_8" value="Yoshi's"><div class="stlchek"></div><div class="name"> Yoshi's</div>
				</div>
				</label>
				<label for="game_9">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_9" value="Mario Odyssey"><div class="stlchek"></div> <div class="name">Mario Odyssey</div>
				</div>
				</label>
			</div>
		</div>
	</main>


main{
	max-width: 720px;
	margin: 0 auto;
}
label{
	cursor: pointer;
}
label:hover{
	color: #03A5D;
}
input[type=radio] {
	display: none;
}
input[type=checkbox] {
	display: none;
}
.stlradio {
    display: inline-block;
    border: 1px solid #b2b1b1;
    width: 16px;
    height: 16px;
    position: relative;
    vertical-align: middle;
    box-sizing: border-box;
    margin-right: 4px;
    border-radius: 300px;
    background-color:#ffffff;
}
.stlradio:before {
    content: "";
    background: #03A5D7;
    width: 8px;
    height: 8px;
    opacity: 0;
    transition: 0.3s;
    position: absolute;
    top: 3px;
    left: 3px;
    border-radius: 300px;
}

input:checked + .stlradio:before {
    opacity: 1;
}
.stlchek {
    display: inline-block;
    border: 1px solid #b2b1b1;
    width: 16px;
    height: 16px;
    position: relative;
    vertical-align: middle;
    box-sizing: border-box;
    margin-right: 4px;
}
.stlchek:before {
    content: "";
    background: #03A5D7;
    width: 8px;
    height: 8px;
    opacity: 0;
    transition: 0.3s;
    position: absolute;
    top: 3px;
    left: 3px;
}
input:checked + .stlchek:before {
    opacity: 1;
}
.name{
display: inline-block;
}
.name:hover{
	color: #03A5D7;
}
.align_game{
	display:flex;
	align-items: center;
}

.align{
	display: inline-flex;
	align-items: center;
	margin: 0px 5px 0px 5px;
}
.all_game{
	position: relative;
}
.game_ps {
	position:absolute;
	display: none;
}

.game_xb {
	position:absolute;
	display: none;

}

.game_nin {
	position:absolute;
	display: none;
}


let radioCheck = document.querySelectorAll(".radio");
let box = document.querySelectorAll(".box");
let outConsol = document.querySelector(".out_console");
let outGame = document.querySelector(".out_game");
let outSelectGame = document.querySelector(".out_select_game");
let gamePs = document.querySelector(".game_ps");
let gameXb = document.querySelector(".game_xb");
let gameNin = document.querySelector(".game_nin");

function checkedShow() {
    outConsol.innerHTML = "Ваша консоль: " + this.value;
}

function consl(){
    for(let i=0; i<radioCheck.length; i++){
        radioCheck[i].addEventListener("change", checkedShow);
    }
	
}
consl();

function selectedRadioButton(){
	for(let i=0; i<radioCheck.length; i++){
		if(radioCheck[0].checked){
			gamePs.style.display = "block";
			gameXb.style.display = "none";
			gameNin.style.display = "none";
			outGame.innerHTML = "Эксклюзивы для PS4"
		}
		else if(radioCheck[1].checked){
			gamePs.style.display = "none";
			gameXb.style.display = "block";
			gameNin.style.display = "none";
			outGame.innerHTML = "Эксклюзивы для X-box"
		}
		else if(radioCheck[2].checked){
			gamePs.style.display = "none";
			gameXb.style.display = "none";
			gameNin.style.display = "block";
			outGame.innerHTML = "Эксклюзивы для Nindendo"
		}
	}
}

function gameAll(){
    for(let i=0; i<radioCheck.length; i++){
        radioCheck[i].addEventListener("change", selectedRadioButton);
    }
	
}
gameAll();



Все что мог попробовать не получается реализовать следующее.

Нужно что бы при выборе игры, она выводилась <div class="out_select_game"></div> если их выбрано не одна то они должны идти в строку. И если чек бокс снят то и игра должна исчезнуть из строки.

рони 31.03.2020 15:23

Сергей Ракипов,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  main{
	max-width: 720px;
	margin: 0 auto;
}
label{
	cursor: pointer;
}
label:hover{
	color: #03A5D;
}
input[type=radio] {
	display: none;
}
input[type=checkbox] {
	display: none;
}
.stlradio {
    display: inline-block;
    border: 1px solid #b2b1b1;
    width: 16px;
    height: 16px;
    position: relative;
    vertical-align: middle;
    box-sizing: border-box;
    margin-right: 4px;
    border-radius: 300px;
    background-color:#ffffff;
}
.stlradio:before {
    content: "";
    background: #03A5D7;
    width: 8px;
    height: 8px;
    opacity: 0;
    transition: 0.3s;
    position: absolute;
    top: 3px;
    left: 3px;
    border-radius: 300px;
}
input:checked + .stlradio:before {
    opacity: 1;
}
.stlchek {
    display: inline-block;
    border: 1px solid #b2b1b1;
    width: 16px;
    height: 16px;
    position: relative;
    vertical-align: middle;
    box-sizing: border-box;
    margin-right: 4px;
}
.stlchek:before {
    content: "";
    background: #03A5D7;
    width: 8px;
    height: 8px;
    opacity: 0;
    transition: 0.3s;
    position: absolute;
    top: 3px;
    left: 3px;
}
input:checked + .stlchek:before {
    opacity: 1;
}
.name{
display: inline-block;
}
.name:hover{
	color: #03A5D7;
}
.align_game{
	display:flex;
	align-items: center;
}
.align{
	display: inline-flex;
	align-items: center;
	margin: 0px 5px 0px 5px;
}
.all_game{
	position: relative;
}
.game_ps {
	position:absolute;
	display: none;
}
.game_xb {
	position:absolute;
	display: none;
}
.game_nin {
	position:absolute;
	display: none;
}
.all_game > div.open{
    display: block;
}
  </style>
</head>
<body>
<main>
		<div class="game_console">
			Выберите консоль: <br><br>
			<div class="align_game">
				<input type="radio" name="console" class="radio" id="ps4" value="PS4"><div class="stlradio"></div><div class="name"> <label for="ps4">PS4</label></div>
			</div>
			<div class="align_game">
				<input type="radio" name="console" class="radio" id="xbox" value="X-box"> <div class="stlradio"></div><div class="name"> <label for="xbox">X-box</label></div>
			</div>
			<div class="align_game">
				<input type="radio" name="console" class="radio" id="nindendo" value="Nindendo"><div class="stlradio"></div><div class="name"> <label for="nindendo">Nindendo</label></div>
			</div>
		</div>
		<br>
		<div class="out_console"></div><br>
		<div class="out_select_game"></div>
		<br><br>
		<div class="out_game"></div>
		<br>
		<div class="all_game">
			<div class="game_ps">
				<label for="game_1">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_1" value="God of War"><div class="stlchek"></div><div class="name"> God of War</div>
				</div>
				</label>
				<label for="game_2">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_2" value="Uncharted 4"> <div class="stlchek"></div><div class="name"> Uncharted 4</div>
				</div>
				</label>
				<label for="game_3">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_3" value="BloodBorne"><div class="stlchek"></div><div class="name"> BloodBorne</div>
				</div>
				</label>
			</div>
			<div class="game_xb">
				<label for="game_4">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_4" value="Gears 5"><div class="stlchek"></div> <div class="name">Gears 5</div>
				</div>
				</label>
				<label for="game_5">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_5" value="Halo Infinite"><div class="stlchek"></div> <div class="name">Halo Infinite</div>
				</div>
				</label>
				<label for="game_6">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_6" value="Cuphead"><div class="stlchek"></div><div class="name"> Cuphead</div>
				</div>
				</label>
			</div>
			<div class="game_nin">
				<label for="game_7">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_7" value="Zelda"><div class="stlchek"></div><div class="name"> Zelda</div>
				</div>
				</label>
				<label for="game_8">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_8" value="Yoshi's"><div class="stlchek"></div><div class="name"> Yoshi's</div>
				</div>
				</label>
				<label for="game_9">
				<div class="align">
					<input type="checkbox" class="stlchek box" id="game_9" value="Mario Odyssey"><div class="stlchek"></div> <div class="name">Mario Odyssey</div>
				</div>
				</label>
			</div>
		</div>
	</main>
<script>
var index = 0;
var game = document.querySelectorAll('.all_game > div');
function gamesSelectedShow() {
    var nameGames = [];
    game[index].querySelectorAll('input').forEach(function(input) {
        if (input.checked) nameGames.push(input.value)
    })
    document.querySelector('.out_select_game').innerHTML = nameGames.length ? nameGames : 'Сделайте выбор!';
}
function consoleSelectedShow() {
    game.forEach(function(div, i) {
        div.classList.toggle('open', i === index)
    })
}
document.querySelectorAll('[name="console"]').forEach(function(console, i) {
    console.addEventListener('change', function() {
        document.querySelector('.out_console').innerHTML = 'Ваша консоль: ' + console.value;
        index = i;
        consoleSelectedShow();
        gamesSelectedShow();
    })
})
game.forEach(function(div) {
    div.addEventListener('change', gamesSelectedShow)
})
</script>
</body>
</html>

Сергей Ракипов 31.03.2020 16:25

Я кончено благодарю, но это же не коммерческий проект, это я сам себе задачу ставлю и пытаюсь ее решить тем самым учусь, вот вы написали а я не чего не понял

var index = 0;

var game = document.querySelectorAll('.all_game > div');

function gamesSelectedShow() {

    var nameGames = [];

    game[index].querySelectorAll('input').forEach(function(input) {

        if (input.checked) nameGames.push(input.value)

    })

    document.querySelector('.out_select_game').innerHTML = nameGames.length ? nameGames : 'Сделайте выбор!';

}

function consoleSelectedShow() {

    game.forEach(function(div, i) {

        div.classList.toggle('open', i === index)

    })

}

document.querySelectorAll('[name="console"]').forEach(function(console, i) {

    console.addEventListener('change', function() {

        document.querySelector('.out_console').innerHTML = 'Ваша консоль: ' + console.value;

        index = i;

        consoleSelectedShow();

        gamesSelectedShow();

    })

})

game.forEach(function(div) {

    div.addEventListener('change', gamesSelectedShow)
})


Хотя бы в двух словах как это работает

рони 31.03.2020 17:05

Сергей Ракипов,
forEach тоже for, но гораздо удобнее.

var index = 0;// номер открытой вкладки с названиями игр

var game = document.querySelectorAll('.all_game > div'); // массив вкладок

function gamesSelectedShow() {  //сбор названий игр в открытой  вкладке

    var nameGames = []; //массив для названий

    game[index].querySelectorAll('input').forEach(function(input) { //цикл по всем инпутам в открытой вкладке

        if (input.checked) nameGames.push(input.value) // если стоит галочка, сохранияем имя игры в массив имён

    })

    document.querySelector('.out_select_game').innerHTML = nameGames.length ? nameGames : 'Сделайте выбор!';
   // выводим имена если они есть(длина массива не ноль) иначе надпись Сделайте выбор
}

function consoleSelectedShow() {// обходим все  вкладки, добавляем, если номер вкладки совпадаем с индексом консоли,  или убираем класс open
    // этот класс открывает вкладку  .all_game > div.open{ display: block;}
    game.forEach(function(div, i) {

        div.classList.toggle('open', i === index)

    })

}

document.querySelectorAll('[name="console"]').forEach(function(console, i) { //обходим все кнопки для выбора консоли
     // на кнопку ставим обработчик
    console.addEventListener('change', function() {
        //если нажали на кнопку, выводим значение этой кнопки
        document.querySelector('.out_console').innerHTML = 'Ваша консоль: ' + console.value;

        index = i;// меняем индекс для открывания вкладки

        consoleSelectedShow(); // открываем вкладку с нужным индексом

        gamesSelectedShow(); // смотрим есть ли выбранные названия в открытой вкладке

    })

})

game.forEach(function(div) {  // ставим обработку на каждую вкладку

    div.addEventListener('change', gamesSelectedShow) // если в вкладке был выбор, выводим актуальный список игр
})

Сергей Ракипов 31.03.2020 17:09

Цитата:

Сообщение от рони (Сообщение 521978)
Сергей Ракипов,
forEach тоже for, но гораздо удобнее.

var index = 0;// номер открытой вкладки с названиями игр

var game = document.querySelectorAll('.all_game > div'); // массив вкладок

function gamesSelectedShow() {  //сбор названий игр в открытой  вкладке

    var nameGames = []; //массив для названий

    game[index].querySelectorAll('input').forEach(function(input) { //цикл по всем инпутам в открытой вкладке

        if (input.checked) nameGames.push(input.value) // если стоит галочка, сохранияем имя игры в массив имён

    })

    document.querySelector('.out_select_game').innerHTML = nameGames.length ? nameGames : 'Сделайте выбор!';
   // выводим имена если они есть(длина массива не ноль) иначе надпись Сделайте выбор
}

function consoleSelectedShow() {// обходим все  вкладки, добавляем, если номер вкладки совпадаем с индексом консоли,  или убираем класс open
    // этот класс открывает вкладку  .all_game > div.open{ display: block;}
    game.forEach(function(div, i) {

        div.classList.toggle('open', i === index)

    })

}

document.querySelectorAll('[name="console"]').forEach(function(console, i) { //обходим все кнопки для выбора консоли
     // на кнопку ставим обработчик
    console.addEventListener('change', function() {
        //если нажали на кнопку, выводим значение этой кнопки
        document.querySelector('.out_console').innerHTML = 'Ваша консоль: ' + console.value;

        index = i;// меняем индекс для открывания вкладки

        consoleSelectedShow(); // открываем вкладку с нужным индексом

        gamesSelectedShow(); // смотрим есть ли выбранные названия в открытой вкладке

    })

})

game.forEach(function(div) {  // ставим обработку на каждую вкладку

    div.addEventListener('change', gamesSelectedShow) // если в вкладке был выбор, выводим актуальный список игр
})

спасибо завтра буду разбираться, на сегодня голова уже не варит

рони 31.03.2020 17:17

Сергей Ракипов,
если нет особой необходимости, не копируйте ответ целиком, есть цитирование Цитата выделенного.

Сергей Ракипов 01.04.2020 07:47

Цитата:

Сообщение от рони
Цитата выделенного

Хорошо, я понял

Сергей Ракипов 01.04.2020 09:05

Вроде бы не много понял, но понимаю что много еще в чем нужно разобраться.
Я когда сам пробовал, тоже и пуши и массивы использовал, но все не правильно писал. Нужно знать синтаксис и логику, а остальное можно и в справочнике прочесть.

Спасибо


Часовой пояс GMT +3, время: 21:22.