2015-07-30 4 views
2

Это то, что я хочу сделать:Кнопки нажмите Звуки

У меня есть 30 кнопок. И я хочу, чтобы при нажатии каждой кнопки он воспроизводил разные mp3-файлы. Как это http://www.soundjig.com/pages/soundfx/beeps.html

Я просто знаю, как нажать кнопку 1, чтобы играть 1 звуковой файл, как это:

<audio id="mysoundclip" preload="auto"> 
    <source src="ci1.mp3"></source> 
</audio> 
<button type="button" class="ci">play</button> 

<script type="text/javascript"> 
    var audio = $("#mysoundclip")[0]; 
     console.log(audio); 
    $("button.play").click(function() { 
     audio.play(); 
    }); 
</script> 

Я не хочу применить весь этот код на все кнопки - Есть в любом случае делать это быстро?

Благодарим за понимание!

+1

Я только что ответил на этот вопрос в другой теме, это домашнее задание? http://stackoverflow.com/questions/31715188/buttons-click-sounds – Felix

+0

@FelixG тот же пост, вот [правильная ссылка] (http://stackoverflow.com/questions/31715017/html5-audio-player-not -working-on-playlist/31715260 # 31715260) – Kaiido

ответ

6

Вы можете использовать класс Audio, предоставляемый JavaScript.

Отъезд fiddle.

Это фрагмент.

var baseUrl = "http://www.soundjay.com/button/"; 
 
var audio = ["beep-01a.mp3", "beep-02.mp3", "beep-03.mp3", "beep-04.mp3", "beep-05.mp3", "beep-06.mp3", "beep-07.mp3", "beep-08b.mp3", "beep-09.mp3"]; 
 

 
$('button.ci').click(function() { 
 
    var i = $(this).attr('id').substring(1);   //get the index of button 
 
    new Audio(baseUrl + audio[i - 1]).play();   //play corresponding audio 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<button id="b1" type="button" class="ci">SOUND</button> 
 
<br> 
 
<button id="b2" type="button" class="ci">SOUND</button> 
 
<br> 
 
<button id="b3" type="button" class="ci">SOUND</button> 
 
<br> 
 
<button id="b4" type="button" class="ci">SOUND</button> 
 
<br> 
 
<button id="b5" type="button" class="ci">SOUND</button> 
 
<br> 
 
<button id="b6" type="button" class="ci">SOUND</button> 
 
<br> 
 
<button id="b7" type="button" class="ci">SOUND</button> 
 
<br> 
 
<button id="b8" type="button" class="ci">SOUND</button> 
 
<br> 
 
<button id="b9" type="button" class="ci">SOUND</button> 
 
<br>

+0

Я имею в виду, что каждая кнопка будет воспроизводить другой звук. Является ли эта работа тем, что я имею в виду? Спасибо! – user3688221

+0

Обновлен мой ответ. Если у вас есть список аудиофайлов, то ответ вам поможет –

+0

Теперь это имеет смысл, поскольку OP уже знает, как реализовать решение для одной кнопки, и ему нужно было обрабатывать все его кнопки –

0

сделать ваши кнопки отличаются друг от друга путем добавления id к каждому из них. Это позволит вам отображать каждую кнопку с собственным аудиофайлом, указывая те же id на тег <source>. Пример:

<audio id="mysoundclip" preload="auto"> 
    <source src="ci1.mp3" id="1"></source> 
</audio> 
<button type="button" class="ci" id="1">play</button> 

<script type="text/javascript"> 
    $("button.play").click(function() { 
    var id = $('this').data('id'); 

    var audio = $('#mysoudclip #'+id)[0]; 
     audio.play(); 
    }); 
</script> 
+0

вам следует избегать запуска 'id' с номером – Kaiido

+0

@ Кайдидо, я согласен с вами, он может конкатенировать небольшую строку и добавить логику, которая будет обрабатывать разницу. Я редактирую, чтобы принять во внимание наилучшую практику, которую вы упомянули, спасибо –

+0

или используйте массив и for-loop – Kaiido

0

Это мое решение, основанное на подсказках Shrinivas Shukla и whiteletter (ниже). И этот код игры как * .WAV и * mp3 файл:

<script type="text/javascript"> 
$('td.bb').click(function() { // add a same class to every button 
    var fileName = $(this).attr('id'); //fileName as id button 
    var audiot = new Audio("file/" +fileName+".mp3"); 
    audiot.play(); 
    var audiott = new Audio("file/" +fileName+".wav"); 
    audiott.play(); 
}); 

Примечание: имя звукового файла в качестве идентификатора каждой кнопки, что у меня есть, и добавить тот же класс для каждой кнопки - в этом случае: «BB»