Не правильно выводится текст

149
13 апреля 2022, 04:30

Задача: если в поле вводится ответ с 1 ошибкой в цифре, то выводится частичное решение, если 2 ошибки и более, то ответ неверный, если все цифры совпадают, то ответ верный. НО почему-то код работает не совсем верно

function rezultat1() {
 const user_answer = document.getElementById('otvet1').value;
 const correct_answer = '529736';
 let score = 0;
 for (let i = 0; i < correct_answer.length; i++) {
   if (correct_answer[i] == user_answer[i]) score++; //если символы двух строк совпадаем, увеличиваем score на 1
 }
 if (score == correct_answer.length) { //ответ полностью верный
   document.getElementById("itog1").innerHTML ='Ваш ответ ВЕРНЫЙ! Вы набрали 2 балла.';
    document.getElementById("otvet1").classList.remove("half");
    document.getElementById("otvet1").classList.remove("wrong");
    document.getElementById("otvet1").classList.add("correct");
 } else if (score > 0) { 
    document.getElementById("itog1").innerHTML = 'Ваш ответ ЧАСТИЧНО ВЕРНЫЙ! Правильный ответ: А-5 Б-2 В-9 Г-7 Д-3 Е-6. Вы набрали 1 балл.';
   document.getElementById("otvet1").classList.remove("correct");
   document.getElementById("otvet1").classList.remove("wrong");
   document.getElementById("otvet1").classList.add("half");
 } else { 
   document.getElementById("itog1").innerHTML = 'Ваш ответ НЕВЕРНЫЙ! Правильный ответ: А-5 Б-2 В-9 Г-7 Д-3 Е-6. Вы набрали 0 баллов.';
document.getElementById("otvet1").classList.remove("correct");
document.getElementById("otvet1").classList.remove("half");
document.getElementById("otvet1").classList.add("wrong");
 } 
}
.correct {
  background-color: #79ba6c;
  color: #000000;
}
.wrong {
  background-color: #ed9898;
  color: #000000;
}
.half
{
background-color:#f5b65d;
color:#000000;
}
<big><font size="5" face="Roboto">Ответ:<input type="text" id="otvet1" placeholder="Ваш ответ"></font></big>
<button onclick="rezultat1()"><font size="4" face="Roboto">Далее</font></button>
<p id="itog1"></p>

Answer 1

Вот так:

} else if (score == correct_answer.length - 1) { 

или вы можете считать неправильные ответы - это еще лучше и сравнивать с 0 и 1:

  errors = 0;
  for (let i = 0; i < Math.min(correct_answer.length, user_answer.length); i++) {
    if (correct_answer[i] != user_answer[i]) 
        errors++; 
  }

код:

function rezultat1() {
  const user_answer = document.getElementById('otvet1').value;
  const correct_answer = '529736';
  const correct_answer_text = Array.from(correct_answer, (obj, index) => String.fromCharCode("А".charCodeAt(0) + index) + '-' + obj).join(' ');
    
  for (leter of correct_answer) {
  }
  let score = 0;
  for (let i = 0; i < Math.min(correct_answer.length, user_answer.length); i++) {
    if (correct_answer[i] == user_answer[i]) 
        score++; //если символы двух строк совпадаем, увеличиваем score на 1
  }
  
 if (score == correct_answer.length) { //ответ полностью верный
   document.getElementById("itog1").innerHTML ='Ваш ответ ВЕРНЫЙ! Вы набрали 2 балла.';
    document.getElementById("otvet1").classList.remove("half");
    document.getElementById("otvet1").classList.remove("wrong");
    document.getElementById("otvet1").classList.add("correct");
 } else if (score == correct_answer.length - 1) { 
    document.getElementById("itog1").innerHTML = `Ваш ответ ЧАСТИЧНО ВЕРНЫЙ! Правильный ответ: ${correct_answer_text}. Вы набрали 1 балл.`;
   document.getElementById("otvet1").classList.remove("correct");
   document.getElementById("otvet1").classList.remove("wrong");
   document.getElementById("otvet1").classList.add("half");
 } else { 
   document.getElementById("itog1").innerHTML = `Ваш ответ НЕВЕРНЫЙ! Правильный ответ: ${correct_answer_text}. Вы набрали 0 баллов.`;
document.getElementById("otvet1").classList.remove("correct");
document.getElementById("otvet1").classList.remove("half");
document.getElementById("otvet1").classList.add("wrong");
 } 
}
.answer {
  font-family:  "Roboto";
  font-size:    12px;
  font-weight:  700;
  
  margin-bottom:  20px;
}
input {
  margin-left:  20px;
}
.correct {
  background-color: #79ba6c;
  color: #000000;
}
.wrong {
  background-color: #ed9898;
  color: #000000;
}
.half {
  background-color:#f5b65d;
  color:#000000;
}
<div class = 'answer'>Ответ: <input type="text" id="otvet1" placeholder="Ваш ответ"><button onclick="rezultat1()">Далее</button></div>
<p id="itog1"></p>

P.S.

кстати вы бы автоматизировали бы вывод информации об ответе:

к примеру:

  const correct_answer_text = Array.from(correct_answer, (obj, index) => String.fromCharCode("А".charCodeAt(0) + index) + '-' + obj).join(' ');
READ ALSO
Переход на сайт

Переход на сайт

Проблема заключается в том что при вводе пароля сайт не переходит на другую страницу(способ перехода header)

265
Как подготовить сайт к размещению?

Как подготовить сайт к размещению?

Я учусь и наступил тот момент, когда хочу загрузить сайт (html+css+js) в сетьПонятно, что сначала надо оплатить хостинг, домен

117
Не работает background-image. Что не так?

Не работает background-image. Что не так?

Вот кодСсылка правильная

212
Как сделать фон адаптивным?

Как сделать фон адаптивным?

Здраствуйте! Суть проблемы: при верстке сайта нужно, чтобы фон корректно отображался на всех устройствах, но при адаптивной верстке у меня...

218