Na atividade é explicado que o segundo parâmetro de substring é exclusivo e é dado como exemplo o código
var string = "Alura";
var resultado = string.substring(1, 4);
Chegando ao valor lur. Até aí ok!
Mais pra frente é dada a solução :
var comparavel = nome.substr(0, this.value.length);
if (!(this.value == comparavel)) {
paciente.classList.add("invisivel");
} else{
paciente.classList.remove("invisivel");
}
Contudo, sendo exclusivo, uma vez que o último carácter seja incluído, caímos no caso else, deixando aplicado a classe "invisivel".
Para resolver esse problema, entendo que o código deveria conter a correção na primeira linha:
var comparavel = nome.substr(0, this.value.length + 1);
Faz sentido? Há coerência nesse raciocínio?