Я пытаюсь проверить, правда ли написанное мной письмо.

Для exemplo у меня есть одна строка, которую я поймал из массива, выполняющего соединение (''):

"проблема тестового javascript css pc"

Мой текущий код:

document.addEventListener('keydown', (event) => {

  let count = 0
  let charlist = "problem test javascript css pc"

for(let i = 0; i < charlist.length; i++){
  if(charlist[i] === event.key){
    count++
    console.log(count)
  }

}

 })

Когда я набираю «s» - это 2, а когда я набираю «t» - это 3, последовательности нет.

Что мне нужно, так это проверить только первую букву «p» и count 1 вернуть true, набрать букву «r» count 1 return true

Как я могу это проверить?

-3
SantGT5 15 Июн 2021 в 02:38

2 ответа

Лучший ответ

Подход, отличный от @ Kinglish answer, сравнивает текущий символ строки с использованием текущего счетчика.

let count = 0

document.addEventListener('keydown', (event) => {

  let mystring = "problem test javascript css pc"
  
  for(let i = count; i < mystring.length; i++){
    if(event.key == mystring.charAt(i)){
      console.log('correct character')
      count++
      break;
    }
    if (event.key != mystring.charAt(count+1)) {
      console.log('wrong character')
      break;
    } 
  }

})
<div>problem test javascript css pc</div>
<input style="margin-top: 10px;" class="typebox" placeholder="type here..."></div>
0
itsisaac19 15 Июн 2021 в 00:11

Вот пример, которому вы можете следовать. Сначала вы сохраняете фразу как массив, и для каждого keydown сравнивайте event.key с буквой, которая соответствует индексу counter массива фраз. За каждую правильно набранную букву вы увеличиваете свой счетчик. Просмотрите этот код, чтобы понять, как он работает.

let keycounter = 0,
  correct = 0,
  wrong = 0;
let response = document.querySelector('.response')
let completed = document.querySelector('.completed')
document.addEventListener('keydown', (event) => {

  let count = 0
  let charlist = "problem test javascript css pc";
   if (charlist.split('')[keycounter] === event.key) {
    completed.innerHTML += event.key
    correct++;
    keycounter++

    response.innerHTML = event.key + ' was correct';
  } else {
    wrong++;
    response.innerHTML = event.key + ' was wrong';
  }

  response.innerText += ' - ' + correct + ' right/' + wrong + ' wrong so far'

  if (correct === charlist.split('').length) response.innerText += +"<br> FINISHED";

})
.completed:empty, .response:empty{
display:none;
}

.completed, .response{
margin:5px 0;
padding:5px;
background:#f0f0f0;
}

.response{
color:#666;
}
<p>Click in this area and type in this phrase <strong>problem test javascript css pc</strong></p>

<div class='completed'></div>
<div class='response'></div>
0
Kinglish 15 Июн 2021 в 00:14