# alert, prompt, confirm

## [alert](https://learn.javascript.ru/alert-prompt-confirm#alert)

Эта функция показывает сообщение и ждёт, пока пользователь нажмёт кнопку «ОК».

Например:

```javascript
alert("Hello");
```

Это небольшое окно с сообщением называется *модальным окном*. Понятие *модальное* означает, что пользователь не может взаимодействовать с интерфейсом остальной части страницы, нажимать на другие кнопки и т.д. до тех пор, пока взаимодействует с окном. В данном случае – пока не будет нажата кнопка «OK».

## [prompt](https://learn.javascript.ru/alert-prompt-confirm#prompt)

Функция `prompt` принимает два аргумента:

```javascript
result = prompt(title, [default]);
```

Этот код отобразит модальное окно с текстом, полем для ввода текста и кнопками OK/Отмена.

`title`Текст для отображения в окне.`default`Необязательный второй параметр, который устанавливает начальное значение в поле для текста в окне.Квадратные скобки в синтаксисе `[...]`

Квадратные скобки вокруг `default` в описанном выше синтаксисе означают, что параметр факультативный, необязательный.

Пользователь может напечатать что-либо в поле ввода и нажать OK. Введённый текст будет присвоен переменной `result`. Пользователь также может отменить ввод нажатием на кнопку «Отмена» или нажав на клавишу Esc. В этом случае значением `result` станет `null`.

Вызов `prompt` возвращает текст, указанный в поле для ввода, или `null`, если ввод отменён пользователем.

Например:

```javascript
let age = prompt('Сколько тебе лет?', 100);

alert(`Тебе ${age} лет!`); // Тебе 100 лет!
```

:exclamation: Для **IE**: всегда устанавливайте значение по умолчанию

Второй параметр является необязательным, но если не указать его, то Internet Explorer вставит строку `"undefined"` в поле для ввода.

Запустите код в Internet Explorer и посмотрите на результат:

```javascript
let test = prompt("Test");
```

Чтобы `prompt` хорошо выглядел в IE, рекомендуется всегда указывать второй параметр:

```javascript
let test = prompt("Test", ''); // <-- для IE
```

## [confirm](https://learn.javascript.ru/alert-prompt-confirm#confirm)

Синтаксис:

```javascript
result = confirm(question);
```

Функция `confirm` отображает модальное окно с текстом вопроса `question` и двумя кнопками: OK и Отмена.

Результат – `true`, если нажата кнопка OK. В других случаях – `false`.

Например:

```javascript
let isBoss = confirm("Ты здесь главный?");

alert( isBoss ); // true, если нажата OK
```

## Проблеми з confirm

Хотів перед запитом з confirm закрити popup-менюшку і виділити червоним рядок в таблиці, який мав видалятися. Але confirm спрацьювував, а менюшка не закривалася і рядок не виділявся. Хоча текстові мітки в config.log() між ціми командами виводилися коректно.

Я так і не зрозумів - в чому причина?..

Зробив задумане лише обгорнувши `confirm` у `setTimeout(function() {}, 50);`

```javascript
tr_line.classList.add('table-danger');
console.log('роблю червоним рядок!');
console.log('намагаюсь закрити меню!');

setTimeout(function() {

    if (confirm(`Дійсно бажаєте видалити...?`))
    {
        console.log('confirmed');
        fetch("...")
    }
    else
    {
        console.log('canceled');
        tr_line.classList.remove('table-danger');
    }

}, 50);

```

<br>
