arteqrt
@arteqrt
Почти не начинающий програмист

Крестики нолики, как решить?

Функция проверяет условие, если верно выполняет
в качестве условия у меня 3 элемента массива они должны быть равны символу.
Функция почему то даже при несовпадении символов выполняется
for (let i = 0; i < 9; i++) {
	document.getElementById('block').innerHTML += '<div class="blocks"></div>';
}

var nul = 2;
function q() {
	alert('win - x!');
	location.reload();
}
function q1() {
	alert('win - o!');
	location.reload();
}

document.getElementById('block').onclick = function(event) {
	if (event.target.className == 'blocks') {
		if (nul % 2 == 0) {
			event.target.innerHTML = 'x';
		}
		else {
			event.target.innerHTML = 'o';
		}
		nul++;
		checkWin();
	}
}
function checkWin() {
	var check =  document.getElementsByClassName('blocks');
	
	if (check[0,1,2].innerHTML == 'x') {
		q();
	}
	else if (check[3,4,5].innerHTML == 'x') {
		q();
	}
	else if (check[6,7,8].innerHTML == 'x') {
		q();
	}
	else if (check[0,3,6].innerHTML == 'x') {
		q();
	}
	else if (check[1,4,7].innerHTML == 'x') {
		q();
	}
	else if (check[2,5,8].innerHTML == 'x') {
		q();
	}
	else if (check[0,4,8].innerHTML == 'x') {
		q();
	}
	else if (check[2,4,6].innerHTML == 'x') {
		q();
	}



	else if (check[0,1,2].innerHTML == 'o') {
		q1();
	}
	else if (check[3,4,5].innerHTML == 'o') {
		q1();
	}
	else if (check[6,7,8].innerHTML == 'o') {
		q1();
	}
	else if (check[0,3,6].innerHTML == 'o') {
		q1();
	}
	else if (check[1,4,7].innerHTML == 'o') {
		q1();
	}
	else if (check[2,5,8].innerHTML == 'o') {
		q1();
	}
	else if (check[0,4,8].innerHTML == 'o') {
		q1();
	}
	else if (check[2,4,6].innerHTML == 'o') {
		q1();
	}

}
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 2
@McBernar
check[1, 2, 3].innerHTML — это какие-то новые грани джаваскрипта.
Ответ написан
@netruxa
на беглый взгляд надо все проверки типа
if (check[0,1,2].innerHTML == 'x') {
заменить на
if (check[0].innerHTML == 'x' && check[1].innerHTML == 'x' && check[2].innerHTML == 'x') {

будет работать, но как то грязно это все. думаю, можно поэлегантней решение найти
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы