jConfirm не возвращает истину или ложь

Вот что я пытаюсь сделать....

function myFunction()
{
  var x=jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {
      y=r; 
      alert(y);
  });

  alert(x);
 }

Почему alert(x) запускается первым (я новичок в javascript) и выдает предупреждение "undefined", а после нажатия "ОК" выдает предупреждение "True" и "False" при нажатии "Отмена"?

Можно ли как-нибудь заставить jConfirm вернуть true или false... то есть x быть trur или false?

Я использую плагин " http://abeautifulsite.net/" для jConfirm.

1 ответ

jConfirm не создает alert боксы, он создает элемент HTML, который выглядит как окно оповещения. Важным отличием здесь является то, что alert() окно остановит выполнение Javascript, пока не закроется, поэтому alert(1); console.log(2); сначала предупредит, а затем войдите в консоль. Поскольку jConfirm не использует alert(), если вы позвоните jConfirm(1, ...); console.log(2) он покажет окно подтверждения (HTML), а затем запишет на консоль через доли секунды.

Версия сложного слова это то, что alert() является синхронным - он блокирует выполнение скрипта до тех пор, пока вы не выберете что-то из оповещения. jConfirm является асинхронным, и выполнение сценария продолжается независимо от вашего выбора до тех пор, пока вы не выберете что-либо, после чего оно вызывает функцию обратного вызова.

Другие вопросы по тегам