Показать сообщение отдельно
  #1 (permalink)  
Старый 06.05.2018, 11:09
Аспирант
Отправить личное сообщение для Булат Азат улы Посмотреть профиль Найти все сообщения от Булат Азат улы
 
Регистрация: 07.09.2016
Сообщений: 83

Переменная с "new Audio()" всегда "undefined".
Всех приветствую. Хочу проверить, содан ли "new Audio()" и записан ли в переменную. Если еще не создан - создать его и показать блок с аудио-плеером (т.е. при открытии страницы с аудио проигрыватель у меня будет скрытым, и при первом клике на любую аудио этот блок у меня откроется и тут же создастся аудио()).
Хотел я это сделать следующим образом:
$("#playPause").click(function(){
	if(typeof audio === "undefined"){
		$("#audioPlayer").show(100);
		var audio = new Audio();
		audio.autoplay = false;
		audio.loop = false;
		audio.volume = 0.5;
		audio.src = '001.mp3';
		$(this).text("\u23f8");
		audio.play();
	}else{
		if($(this).text() == "\u25b6") {
			$(this).text("\u23f8");
			audio.play();
		} else {
			$(this).text("\u25b6");
			audio.pause();
		}
	}
	
});

И почему-то у меня и после выполнения первого условия (ведь в начале (до первого клика) переменной "audio" ещё нет), при втором клике всё равно выполняется первое условие, хотя и переменная "audio" уже создана, проигрывается аудио.
Почему так происходит? Читал я, что с проверкой наличия переменной в яваскрипте всё сложнее, чем в PHP, в котором просто написал if(isset($audio)){} - и всё правильно понимается кодом. А в Яваскрипте есть какие-то нюансы...
Ответить с цитированием