Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378

Простейший замены состояния

08.02.2015, 15:59. Показов 1556. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все очень просто(ну по идее).
У меня есть один проигрыватель:
HTML5
1
<audio id="audio1" style="width:25%">Canvas not supported</audio>
Есть несколько треков:
HTML5
1
2
<a name="ссылка1" class="playbutton" onclick="togglePlay(this);"><img src="../../images/play.png"></a>
<a name="ссылка2" class="playbutton" onclick="togglePlay(this);"><img src="../../images/play.png"></a>
Которые передают свое значение ссылки на трек из name в src в <audio>, над этим работает скрипт:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
// Create a couple of global variables to use. 
       var audioElm = document.getElementById("audio1"); // Audio element
 
       function togglePlay($enterer) {
         if (audioElm.src == $enterer.name) {
             pauseAudio(audioElm);   //  if player is playing, then pause
         }
         else {
         //pauseAudio(audioElm);
         playAudio(audioElm, $enterer);
         }
       }
Задача такова: нажал на одну ссылку - играет один трек. Если нажал на нее еще раз - затихло все. Нажмешь на второй, этот остановится и начнет играть второй. Просто же! Но до меня не доходит! playAudio и pause соответственно функции запуска треков.
Работает все кроме пауз. Тоесть треки переключаются но остановить их невозможно. Я проверил код логически раз 50, серьезно, я не вижу тут ошибки в логике работы. Где же она?

Благодарю за внимание!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2015, 15:59
Ответы с готовыми решениями:

phpDesinger: как переключить курсор из состояния замены символов, в обыкновенный вид?
Всем привет! Помогите ослу: в пхп-дизайнере не могу найти как переключить курсор из состояния замены символов, в обыкновенный вид. ...

Графы: найти все состояния, которые являются достижимыми из заданного состояния
Помогите написать программу: Модель работы некоторой системы представлена ориентированным графом, где вершины – это состояния системы,...

Создание файлов в папке без замены имеющихся путем замены цифр в их имени по порядку
Всем доброго времени суток! Надо при нажатии кнопку создавать файл &quot;Ins001.txt&quot; в директории &quot;Configs\&quot;, а если такой файл уже...

4
 Аватар для arcmag
347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
08.02.2015, 16:42
То есть вам нужно что бы когда вы включаете новый музыкальный файл предыдущий останавливался? Если я правильно понял то по моему вот так вот должно работать
JavaScript
1
2
3
4
5
6
function all_stop(){
    var audio_arr = document.getElementsByTagName("audio");
    for(i=0; i<audio_arr.length; i++){
        audio_arr.item(i).pause();
    }
}
Сначала вызываете эту функцию и когда все активные аудио останавливаются включаете ту которая должна играть.
0
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378
08.02.2015, 16:45  [ТС]
arcmag, Смотрите. Старый музыкальный файл в любом случае остановится ибо ссылка в проигрывателе сменится. Задача исправить код так что бы если ссылка не меняется(тоесть была нажата та же ссылка) срабатывала пауза. Сейчас если нажать на ссылку еще раз(ну что бы остановить) он начинает играть с самого начала.
0
 Аватар для arcmag
347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
08.02.2015, 17:09
Лучший ответ Сообщение было отмечено Master_Yi как решение

Решение

Ну не знаю попробуйте вот так вот

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!doctype html>
<html>
<head>
<title>Мммм...</title>
<script>
    function player_a(elem){
        var audioElm = document.getElementById("audio1"); 
        if(elem.classList.contains("active")){
            elem.classList.remove("active");
            elem.classList.add("pause");
            audioElm.pause();
        }// если при средующем нажатии у кнопки имеется класс active мы оставливаем аудио и заменяем этот клас на класс pause
        else if(elem.classList.contains("pause")){
            elem.classList.remove("pause");
            elem.classList.add("active");
            audioElm.play();
        }// если при средующем нажатии у кнопки имеется класс pause мы снова запускаем аудио и заменяем этот клас на класс active
        else{
            elem.classList.add("active");
            audioElm.play();
        }// при первом включении когда у кнопки нет ни какого класса происходит включение аудио и появляется класс active 
    }
</script>
<body>
<audio id="audio1">
<source src="file.mp3" type="video/mp3"  />
</audio>
<a name="ссылка1" class="playbutton" onclick="player_a(this)">Play</a>
</body>
</html>
1
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378
08.02.2015, 17:25  [ТС]
arcmag, Отличная идея использовать дополнительный класс. Добавил 3 строчки из вашего кода и все заработало! Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2015, 17:25
Помогаю со студенческими работами здесь

Вывести файл до замены и после замены.
Нужно что бы было видно файл до замены и после замены. Program fail; uses crt; var f:text; ct: array of string; i,n:integer; ...

Возможно ли, чтобы предложение для замены слова писалось перед словами для замены
Возможно ли, чтобы предложение для замены слова писалось перед словами для замены?program Project1; uses SysUtils,Windows; ...

Имеется программа, слова для замены берутся из файла, что изменить чтобы для замены писать свое предложение в консоли
program Project3_ready; {$APPTYPE CONSOLE} uses SysUtils, Windows; const

Шифр многоалфавитной замены (Вижнера) и шифр алфавитной замены
Напишите пожалуйста 2 программы в VB шифр многоалфавитной замены (Вижнера) и шифр алфавитной замены;) ОЧЕНЬ НАДО!!!;((((:(

Простейший код,
if($row){ $tpl-&gt;set('{ava_cover}', 'background:url();background-position: center;background-size: cover;width: 960px;height:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru