Здесь происходит несколько вещей, но главное заключается в том, что вы смешиваете различные формы управления потоком:
- Вы используете
salir
(выход, для не испанских sh колонок) как все oop индикатор конца, но ... - Условие l oop всегда верно (так как
salir='n'
оценивается как 'n'
, что верно) - Вы также используете переменная
j
, без использования (вы ничего не делаете с ней, она не участвует ни в условии l oop) - Единственная возможность выхода из l oop - это
break
предложение, которое существует как l oop.
Поскольку ожидаемое поведение неясно для меня, я не могу принять решение, но если оно будет продолжаться, пока пользователь не напишет действительное число, затем запишите таблицу умножения этого числа, это может быть:
<script type="text/javascript">
var tabla="";
var numusuario=0;
var min=0;
var max=9;
var salir = 'n';
do {
numusuario=prompt("Escribe un número entre 0 y 9: ");
if(numusuario>0 && numusuario<10) {
for(var x=min;x<=max;x++)
{
tabla = tabla + x + " x " + numusuario + " = " + (x*numusuario) + "\n";
}
alert(tabla);
salir = 's';
}
} while(salir == 'n')
</script>
do {} while ()
выполняется по крайней мере один раз и проверяет условие в конце, которое кажется лучше подходит в этом случае, мы отбрасываем переменную j
и использовать переменную salir
в качестве управления потоком, пока пользователь пишет правильный номер.