Здравствуйте, есть клавиатурный тренажер, в котором под полем для ввода есть макет клавиатуры. При нажатии на клавишу в случае если
keypress совпадает с буквой, которую надо ввести, на макете определенная клавиша должна мигнуть зеленым и если не совпадает - красным. Я это криво реализовал через изменение значения
animation, но получается так что анимация проигрывается только один раз при первом нажатии, а при последующих ничего не происходит.
Ссылка на jsfiddleФрагмент HTML:<div id="container">
<ul id="keyboard">
<li class="symbol"><span class="off"><b>`</b></span><span class="on">~</span></li>
<li class="symbol"><span class="off"><b>1</b></span><span class="on">!</span></li>
<li class="symbol"><span class="off"><b>2</b></span><span class="on">@</span></li>
<li class="symbol"><span class="off"><b>3</b></span><span class="on">#</span></li>
<li class="symbol"><span class="off"><b>4</b></span><span class="on">$</span></li>
<li class="symbol"><span class="off"><b>5</b></span><span class="on">%</span></li>
<li class="symbol"><span class="off"><b>6</b></span><span class="on">^</span></li>
<li class="symbol"><span class="off"><b>7</b></span><span class="on">&</span></li>
<li class="symbol"><span class="off"><b>8</b></span><span class="on">*</span></li>
<li class="symbol"><span class="off"><b>9</b></span><span class="on">(</span></li>
<li class="symbol"><span class="off"><b>0</b></span><span class="on">)</span></li>
<li class="symbol"><span class="off"><b>-</b></span><span class="on">_</span></li>
<li class="symbol"><span class="off"><b>=</b></span><span class="on">+</span></li>
<li class="delete lastitem"><b>delete</li>
<li class="tab"><b>tab</b></li>
<li class="letter" id="q"><b>q</b></li>
<li class="letter" id="w"><b>w</b></li>
<li class="letter" id="e"><b>e</b></li>
<li class="letter" id="r"><b>r</b></li>
<li class="letter" id="t"><b>t</b></li>
<li class="letter" id="y"><b>y</b></li>
<li class="letter" id="u"><b>u</b></li>
<li class="letter" id="i"><b>i</b></li>
<li class="letter" id="o"><b>o</b></li>
<li class="letter" id="p"><b>p</b></li>
<li class="symbol"><span class="off"><b>[</b></span><span class="on">{</span></li>
<li class="symbol"><span class="off"><b>]</b></span><span class="on">}</span></li>
<li class="symbol lastitem"><span class="off"><b>\</b></span><span class="on">|</span></li>
<li class="capslock"><b>caps lock</b></li>
<li class="letter" id="a"><b>a</b></li>
<li class="letter" id="s"><b>s</b></li>
<li class="letter" id="d"><b>d</b></li>
<li class="letter" id="f"><b>f</b></li>
<li class="letter" id="g"><b>g</b></li>
<li class="letter" id="h"><b>h</b></li>
<li class="letter" id="j"><b>j</b></li>
<li class="letter" id="k"><b>k</b></li>
<li class="letter" id="l"><b>l</b></li>
<li class="symbol"><span class="off"><b>;</b></span><span class="on">:</span></li>
<li class="symbol"><span class="off"><b>'</b></span><span class="on">"</span></li>
<li class="return lastitem"><b>enter</li>
<li class="left-shift"><b>shift</b></li>
<li class="letter" id="z"><b>z</b></li>
<li class="letter" id="x"><b>x</b></li>
<li class="letter" id="c"><b>c</b></li>
<li class="letter" id="v"><b>v</b></li>
<li class="letter" id="b"><b>b</b></li>
<li class="letter" id="n"><b>n</b></li>
<li class="letter" id="m"><b>m</b></li>
<li class="symbol"><span class="off"><b>,</b></span><span class="on"><</span></li>
<li class="symbol"><span class="off"><b>.</b></span><span class="on">></span></li>
<li class="symbol"><span class="off"><b>/</b></span><span class="on">?</span></li>
<li class="right-shift lastitem"><b>shift</b></li>
<li class="space lastitem"><b> </b></li>
</ul>
</div>
Фрагмент CSS:#container {
margin: 100px auto;
width: 688px;
}
#keyboard {
margin: 0;
padding: 0;
list-style: none;
transform: translate(227px, 134px);
}
#keyboard li {
float: left;
margin: 0 7px 7px 0;
width: 55px;
height: 55px;
line-height: 55px;
text-align: center;
background: #fff;
border: 0.3px solid grey;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
font-family: 'Montserrat', sans-serif;
}
.capslock, .tab, .left-shift {
clear: left;
}
#keyboard .tab, #keyboard .delete {
width: 85px;
}
#keyboard .capslock {
width: 95px;
}
#keyboard .return {
width: 108px;
}
#keyboard .left-shift {
width: 110px;
}
#keyboard .right-shift {
width: 158px;
}
.lastitem {
margin-right: 0;
}
.uppercase {
text-transform: uppercase;
}
#keyboard .space {
clear: left;
width: 902px;
}
.on {
display: none;
}
#keyboard li:hover {
position: relative;
top: 1px;
left: 1px;
border-color: #e5e5e5;
cursor: pointer;
}
@keyframes greenBtn {
from {background-color: white;}
50% {background: green;}
to {background: white;}
}
@keyframes redBtn {
from {background-color: white;}
50% {background: red;}
to {background: white;}
}
Фрагмент JS:...
} else if(levelText[counterLetters] == keyName){
keyName = keyName.toLowerCase();
console.log("Введен символ"); //просто проверка
levelText = levelText.substring(1);
text.innerHTML = levelText;
document.getElementById(keyName).style.animation = "greenBtn 0.2s linear";
...
} else {
console.log("Введен неверный символ");
//тут будет код, оповещающий об ошибке
mistakesCounter++;
mistakes.innerHTML = ("Кол-во ошибок: " + mistakesCounter);
document.getElementById(keyName).style.animation = "redBtn 0.2s linear 1";
}
Полный кодБуду благодарен за помощь