Jump to content
  • 0

Как можно изменить?


kohozabr
 Share

Question

У меня есть код


var answer = prompt("Где находится Дубаи? А - в Англии, Б - в Италии, В - в Эмиратах", "");

if(answer == "В" || answer == "в" || answer == "в Эмиратах" || answer == "в эмиратах" || answer == "В ЭМИРАТАХ" || answer == "В Эмиратах"){
alert("Ура! Вы победили!");
}
else{
alert("Вы проиграли. Попробуйте снова.");
}

Как его можно сократить? Хотя бы, чтобы не было вариантов "в Эмиратах", "в эмиратах", "В Эмиратах" и "В ЭМИРАТАХ".

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Попробуйте так:


var answer = prompt("Где находится Дубаи? А - в Англии, Б - в Италии, В - в Эмиратах", "");

answer = answer.toLowerCase;

if(answer == "в" || answer == "в эмиратах"){
alert("Ура! Вы победили!");
}
else{
alert("Вы проиграли. Попробуйте снова.");
}

Можно еще регуляркой сделать, но я это только начал изучать.

  • Like 1
Link to comment
Share on other sites

  • 0

Я так понимаю такой вопрос будет не один и приходить они будут либо с сервера либо сразу в js жить, прекрасно было бы использовать JSON

{
question: 'вопрос',
answers: [
{ answer: 'ответ 1', right: true },
{ answer: 'ответ 2', right: false }
]
}

Если хотите делать через prompt:

var q = {
question: 'вопрос',
answers: [
{ answer: 'ответ 1', right: true },
{ answer: 'ответ 2', right: false }
]
};

function generateQuestion(dataObj) {
var str = dataObj.question + ' ?\n';

for(var i=0; i<dataObj.answers.length; i++) {
str += i+1 + '. ' + dataObj.answers[i].answer + '\n';
}

var result = prompt(str);

/*
тут надо проверить результат, действительно ли юзер ввел число иначе будет ошибка.

С буквами сделать так же просто, надо лишь создать массив букв.
*/

if(dataObj.answers[parseInt(result)-1].right) {
alert('Вы ответили верно');
} else {
alert('Облажался!');
}
}

generateQuestion(q);

На данной основе так же легко сделать popup div c генерацией radio кнопок

Edited by ruslan.savenok
Link to comment
Share on other sites

  • 0

if (answer.match(/^в\s*(эмиратах)?/i)) alert('Правильно');
else alert('Не правильно');

А зачем ты матчишь? Есть же спец. метод под названием test?

	var text = /^в(\s*эмиратах)?/ig;
if(text.test(answer)) alert('Правильно');
else alert('Не правильно');

Link to comment
Share on other sites

  • 0

И что, такая огромная разница между test и match на современном железе для строки в несколько байт?

Да, разница есть. match - это более тяжёлый метод, и нужен не для проверок, а для возвращения массива с нужными данными, а вот test как раз лёгкий, проверочный метод и сюда подходит лучше всего. Имхо.

Link to comment
Share on other sites

  • 0

Мелочи. Мне удобнее первым параметром писать строку, а не регулярку, поэтому я использую match

Если ты никогда пользовался вторым, то это не значит что он неудобный. Тут даже дело не в удобстве, а в использования вещей по их назначению.

Link to comment
Share on other sites

  • 0

Мелочи. Мне удобнее первым параметром писать строку, а не регулярку, поэтому я использую match

Если ты никогда пользовался вторым, то это не значит что он неудобный. Тут даже дело не в удобстве, а в использования вещей по их назначению.

Да ну, я тоже не люблю test :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy