Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.02.2014, 02:42
Новичок на форуме
Отправить личное сообщение для maxvolodya Посмотреть профиль Найти все сообщения от maxvolodya
 
Регистрация: 08.02.2014
Сообщений: 6

Пути к файлам аудио
Вопрос собственно вот в чем:

На странице 30 коротких аудио фалов. Которые должны вызываться нажатием на ячейки таблицы. Так как фалов много, писать к каждому вызов отдельной функции, не эстэтично) Знаю что можно как-то сообразить это с помощью конструктора и переменной в пути к файлу, но (мозг уже взорвал) не получается.
коды примерно такие:
.....
      <tr>
          <td onclick="PlayAlphabet(ka);">ка</td>
          <td onclick="PlayAlphabet(kha);">кха</td>
          <td onclick="PlayAlphabet(ga);">га</td> 
.....


Все аудио файлы имеют такие же имена, т.е ka.mp3, kha.mp3 и т.д.

Какой код дописать, чтобы проигрывался аудио файл с тем же именем, что и аргумент, используемый, когда вызывается функция?
типа:
function(имя) {
  audio = имя.mp3;
  audio.play();
}


Огромнейшее спасибо, если кто-то поможет!!
Ответить с цитированием
  #2 (permalink)  
Старый 08.02.2014, 09:16
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Скорее всего вот так

http://www.w3schools.com/tags/ref_av_dom.asp
Ответить с цитированием
  #3 (permalink)  
Старый 08.02.2014, 13:43
Новичок на форуме
Отправить личное сообщение для maxvolodya Посмотреть профиль Найти все сообщения от maxvolodya
 
Регистрация: 08.02.2014
Сообщений: 6

Наверное там есть ответ, но я не настолько хорошо знаком с JS, чтобы его найти.
пробовал так:
function Audio(name) {
      this.name = name;
      audio.src = this.name + ".mp3";
      audio.play();
    };

и так:
function Audio(name) {
      //this.name = name;
      new Audio(this.name + ".mp3").play();      
    };

всё при том, что в html вызов выглядит так:
<td onclick="Audio(ka);">


но, ничего не заводится

Товарищи подскажите, что изменить/добавить в коде JS..

Последний раз редактировалось maxvolodya, 08.02.2014 в 14:00.
Ответить с цитированием
  #4 (permalink)  
Старый 08.02.2014, 17:06
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

maxvolodya,
вот пример http://learn.javascript.ru/play/xCoCP

<!DOCTYPE HTML>
<html>
  <head>
    <style>
    
      table tr:hover
      {
        cursor: pointer;
        background-color: rgba(255,0,0,.3);
      }
      
    </style>
  
  </head>
  <body>
    
    <table id="music-list">
      <tr>
      <td data-src="http://cs9-10v4.vk.me/p12/e61136d2b40a9f.mp3?extra=idJNGELhQWCZ1k15kvGnbif0aY5rO7rWXgLMqvpWWKJvSiUajonMVR7F0nT8LWT47aoeLPQW0GNcOwMYKm1fuPIitsw-K6Q">
        <div>30 Seconds To Mars - This Is War</div>
      </td>
       </tr>
       <tr>
      <td data-src="http://cs9-8v4.vk.me/p24/bb968817be6960.mp3?extra=hskh5caZMrgPY5KCBbL38PQQ9GVpJZc5fpfaCPaxCLTvEX6l2fgyrgn8RMCWhUMpTOB33jlD81ZjBHEa3cfwf-0ulHqFnmU">
      Lana Del Rey - Video Games (Original)
      </td>
       </tr>
       <tr>
      <td data-src="http://cs536204.vk.me/u35133798/audios/2d5d9e0a126e.mp3?extra=TLxfUtQSuJKwrMd-RcWdWhqR9UnQpT_gdcbiJNX9lGyK9xdfP7qZ1SLsoiuZLjCsSjVpfMZyWYcnWF2RPESkcgNR2rt3tzU">
      Muse - Panic Station 
      </td>
      </tr>
    </table>

    <script>
      
      (function () {
      
        function  parent(fnc, endElem) {// лень было писать цикл проверки поэтому скопировал со своего кода реализцаю.
          if(typeof  fnc != "function")
              return this.parentElement;
      
          if(fnc.call(this, this))
              return this;
      
          var parent = this;
          while(parent = parent.parentElement) {
      
              if(endElem && parent == endElem)
                  return;
      
              if(fnc.call(this, parent))
                  return parent;
          }
      };
      
      
      var list = document.getElementById("music-list"), audio = audioCreate();
      
      list.addEventListener("click", function (e) {
        var src;
        
        var elem = parent.call(e.target, function (elem) {
          return elem.tagName == "TD" && (src = elem.getAttribute("data-src"));
        }, list);
        
        if(!elem) return;
        
        audio.src = src;
        audio.play();
        
      
      });
      
      function audioCreate() {
        
        audio = document.createElement('audio');
        audio.className = 'music';
        audio.setAttribute('controls','');
        audio.preload = 'metadata';
        audio.type = 'audio/mp3';
        audio.innerHTML = 'Вашим браузером не поддерживаеться вопспроизведение музыки.';
        return document.body.appendChild(audio);
      
      }
        
      }());




    </script>

  </body>
</html>
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.

Последний раз редактировалось cyber, 08.02.2014 в 17:27.
Ответить с цитированием
  #5 (permalink)  
Старый 19.02.2014, 19:41
Новичок на форуме
Отправить личное сообщение для maxvolodya Посмотреть профиль Найти все сообщения от maxvolodya
 
Регистрация: 08.02.2014
Сообщений: 6

Спасибо! Это как раз то, что нужно. Уже прикрутил к своей странице, всё отлично. Сам бы я наверно долго до этого додумывался.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воспроизвести два аудио файла по очереди VadimD Internet Explorer 1 29.03.2013 00:03
формирование ссылок на все каталоги пути данного HTML документа vitaxa3581 Общие вопросы Javascript 2 15.12.2012 02:06
Буферизация аудио tropiko Events/DOM/Window 3 11.12.2012 12:22
jquery аудио плеер: плейлист не отображается в firefox roy-aron jQuery 0 27.06.2012 17:20
Поиск кротчайшего пути IVIbILLIb Серверные языки и технологии 6 02.05.2009 17:11