Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.03.2017, 16:17
Аватар для PROPHESSOR
Новичок на форуме
Отправить личное сообщение для PROPHESSOR Посмотреть профиль Найти все сообщения от PROPHESSOR
 
Регистрация: 11.03.2017
Сообщений: 9

return element.onchange
Подскажите, как реализовать такую функцию?

function openDialog(){
    var a = document.createElement('input');
    a.type="file";
    a.onchange = function(){
        //Вернуть this.value
}   
    a.click();
    return //Тот самый this.value; a.value возвращает "" перед закрытием окна
}
}


Использование:
var file = openDialog();
Ответить с цитированием
  #2 (permalink)  
Старый 11.03.2017, 16:17
Аватар для PROPHESSOR
Новичок на форуме
Отправить личное сообщение для PROPHESSOR Посмотреть профиль Найти все сообщения от PROPHESSOR
 
Регистрация: 11.03.2017
Сообщений: 9

Пробовал использовать alert() как блокирующее действие...
Цитата:
Ни фига...
Ответить с цитированием
  #3 (permalink)  
Старый 11.03.2017, 20:23
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Реализовать собственный диалог ведущий себя аналогично prompt не получится. Так что придется переписывать весь код в асинхронном виде.
Ответить с цитированием
  #4 (permalink)  
Старый 12.03.2017, 14:25
Аватар для PROPHESSOR
Новичок на форуме
Отправить личное сообщение для PROPHESSOR Посмотреть профиль Найти все сообщения от PROPHESSOR
 
Регистрация: 11.03.2017
Сообщений: 9

не вариант
Нужно хотя бы псевдосинхронный вид, что бы дождаться ответа и уже тогда выполнить return...

Последний раз редактировалось PROPHESSOR, 12.03.2017 в 14:27. Причина: Дописал
Ответить с цитированием
  #5 (permalink)  
Старый 12.03.2017, 17:58
Кандидат Javascript-наук
Отправить личное сообщение для yazonnile Посмотреть профиль Найти все сообщения от yazonnile
 
Регистрация: 25.05.2012
Сообщений: 133

function openDialog() {
	return new Promise(resolve => {
		var a = document.createElement('input');
		a.type="file";
		a.onchange = function(){
			resolve(e.value);
		};
		a.click();
	});
}

openDialog().then(value => {
	console.log(value);
});
Ответить с цитированием
  #6 (permalink)  
Старый 16.03.2017, 17:24
Аватар для PROPHESSOR
Новичок на форуме
Отправить личное сообщение для PROPHESSOR Посмотреть профиль Найти все сообщения от PROPHESSOR
 
Регистрация: 11.03.2017
Сообщений: 9

Пробовал и такой вариант...
Как я понимаю, использовать как openDialog() не выйдет...

Хотя у меня есть идея приостановить код, пока не получится ответ, но не знаю, как это реализовать...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции Hol1killer Prototype & script.aculo.us 11 05.12.2016 01:37
Анимация для движения блока вниз и вверх snovapavel jQuery 9 24.12.2015 23:12
jQuery научите пользоваться. Станислав89 Общие вопросы Javascript 10 19.12.2013 23:01
Помогите разобраться ŞΘLƉiΞR Общие вопросы Javascript 2 28.08.2012 11:57
регулярки: замена ссылки на ютуб Hekumok Общие вопросы Javascript 105 01.08.2012 10:48