Подскажите пользователю за вход, поблагодарите его за вход Javascript - PullRequest
0 голосов
/ 24 апреля 2018

Появляется первая подсказка, и больше ничего не происходит, даже если я ввожу номер или пытаюсь протолкнуть подсказку, не вводя ничего.

Пока я написал этот код:

var ratingEntry = prompt("We would like for you to review . Please enter a 
rating between 0.0 - 5.0?");

if (ratingEntry === undefined) {
    prompt('Please enter a rating from 0-5!');
} else if (ratingEntry === 0) {
teacherRatings.push('ratingEntry');
    prompt('Thank you!');
} else if (ratingEntry === 1) {
    teacherRatings.push('ratingEntry');
    prompt('Thank you!');
}

Я несколько раз подправил, но безрезультатно.

Ответы [ 4 ]

0 голосов
/ 24 апреля 2018

Возможно, вы захотите проанализировать ввод для Float, а затем использовать цикл while, пока ввод не будет действительным:

var ratingEntry = prompt("We would like for you to review . Please enter a rating between 0.0 - 5.0?");
var ratingNum = parseFloat(ratingEntry)

while (isNaN(ratingNum) || ratingNum < 0 || ratingNum > 5) {
  ratingNum = parseFloat(prompt('Please enter a rating from 0-5!'));
}
teacherRatings.push(ratingNum);
prompt('Thank you!');
0 голосов
/ 24 апреля 2018

Для сравнения целых чисел необходимо сначала разобрать ratingEntry в Integer, затем сравнить и для первого условия. Оно становится пустым, не определено, поэтому поставьте обе проверки с OR в первое условие.

var ratingEntry = prompt("We would like for you to review . Please enter a rating between 0.0 - 5.0?");
if (typeof ratingEntry === undefined || ratingEntry.trim() == '') {
    prompt('Please enter a rating from 0-5!');
} else if (parseInt(ratingEntry) === 0) {
    teacherRatings.push('ratingEntry');
    prompt('Thank you!');
} else if (parseInt(ratingEntry) === 1) {
    teacherRatings.push('ratingEntry');
    prompt('Thank you!');
}

и последнее, что я не уверен, что вы делаете с этим кодом, но так и должно быть. Используйте teacherRatings.push(ratingEntry);

вместо

teacherRatings.push('ratingEntry');  //this push ratingEntry as string in teacherRatings not as a value of variable
0 голосов
/ 24 апреля 2018

Ваша проблема в том, что запрос возвращает строку, и вы проверяете равенство без приведения типов.

1 === 1 is true "1" === 1 is false

В основном "1" - строка, а 1 - целое число.

Измените === на ==, и вы проигнорируете проверку "type". Или просто проверьте "1" вместо 1

0 голосов
/ 24 апреля 2018

A prompt вернет string.И вам нужно всегда захватывать его для сравнения, поэтому я бы сделал:

var message = "We would like for you to review . Please enter a rating between 0.0 - 5.0?";

while(ratingEntry = prompt(message)) {
    if (ratingEntry === '' || ratingEntry < 0 || ratingEntry > 5) {
        message = 'Please enter a rating from 0-5!');
    } else {
        break;
    }
}

и т. Д.потому что вы используете ===, который сравнивает значение и тип (например, 1 === 1 и 1 !== '1', но 1 == '1')

...