Как сделать так, чтобы мои цветные дивы светились в том порядке, в котором им назначен компьютерный массив?
По сути, я придерживаюсь логики своего кода. После того, как я сделаю правильный выбор цвета, я хочу, чтобы компьютер сделал второй выбор, и не только «светился» выбранным цветом, но также светился каждым цветом, который он выбрал в предыдущих раундах. Я сделал функцию glowInOrder, которая, как я думал, будет работать, но она не работает. Я пробовал использовать инструменты разработчика для console.log () массива компьютера и массива проигрывателя, чтобы убедиться, что в них вставляются правильные цвета, и они действительно отображаются. Вот где у меня возникают проблемы с выяснением, почему это не работает. Любая помощь приветствуется. Я уже какое-то время сталкиваюсь с этой проблемой .... (когда я говорю «свечение», я просто имею в виду добавить эффект свечения с помощью CSS. Я сделал для этого функцию makeGlow).
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="simon.css"> </head> <body> <div class="container"> <div class="gameContainer"> <div class="topRow"> <div id="red" class="all"></div> </div> <div class="middleRow"> <div id="green" class="all"></div> <div id="blue" class="all"></div> </div> <div class="bottomRow"> <div id="yellow" class="all"></div> <div id="pink" class="all"></div> </div> </div> </div> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script type="text/javascript" src="simon.js"></script> </body> </html>
*{ margin: 0; padding: 0; } body{ background-color: black; } .all{ border-radius: 50%; height: 100px; width: 100px; } #red{ border: 5px solid red; display: table; margin-left: auto; margin-right: auto; } #blue{ border: 5px solid blue; border-radius: 50%; float: right; display: inline; } #green{ border: 5px solid green; border-radius: 50%; display: inline-block; } #yellow{ border: 5px solid yellow; border-radius: 50%; display: inline-block; margin-left: 40px; } #pink{ border: 5px solid pink; border-radius: 50%; float: right; display: inline; margin-right: 40px; } .middleRow{ margin-top: 70px; margin-bottom:110px; } .gameContainer{ height: 500px; width: 500px; margin-left: 25%; margin-top: 10%; } .hover{ background-color: white; }
var colorArray = ["red","blue","green","yellow","pink"]; var player = []; var computer = []; var round = 0; var randomOrder; var myColor; var chosenColor; //--------------------------------------------------------// function makeGlow(yolo){ $(yolo).addClass('hover'); setTimeout(function(){ $(yolo).removeClass('hover'); },300); } //--------------------------------------------------------// function makeGlowTwo(yolo){ setTimeout(function(){ $(yolo).addClass('hover'); },500); setTimeout(function(){ $(yolo).removeClass('hover'); },800); } //--------------------------------------------------------// function newGame(){ player = []; computer = []; round = 0; } //---------------------------------------------------------// function playerChoice(){ $('.all').on('click',function(e){ player.push(e.target.id); makeGlow(this); }); }; //---------------------------------------------------------// function computerChoice(){ randomOrder = Math.floor(Math.random()* colorArray.length); myColor = colorArray[randomOrder]; computer.push(myColor); chosenColor = "#"+myColor; //makeGlowTwo(chosenColor); return chosenColor; } //--------------------------------------------------------// function newRound(){ round++; computerChoice(); } //---------------------------------------------------------// function glowInOrder() { var i = 0; var moves = setInterval(function(){ makeGlowTwo(computer[i]); i++; if (i >= computer.length) { clearInterval(moves); } }, 400) } //---------------------------------------------------------// function arraysEqual(arr1, arr2) { if(arr1.length !== arr2.length) return false; for(var i = arr1.length; i--;) { if(arr1[i] !== arr2[i]) return false; } return true; } //---------------------------------------------------------// $(document).ready(function(){ playerChoice();//whenever we click something. it will glow and push to player array computerChoice();//computer officially makes choice and returns it as chosenColor makeGlowTwo(chosenColor)//we make that color glow.this marks the start of the game //when we click any color, we offially make our choice //then we set off a function that uses if logic to ask... //...if both arrays are equal then start a new round //the glowInOrder function does not work however... $('.all').on('click',function(){ if(arraysEqual(computer,player)){ newRound(); glowInOrder();//this is not working for some reason... } }); });
Что я уже пробовал:
Я пробовал использовать console.log(компьютер) и console.log(плеер) на каждом шагу, чтобы убедиться, что правильный цвет помещен в массив, и он выглядит так, как они есть. Я не понимаю, почему цвета не светятся по порядку