0
Я использую Angular.js и некоторые Jquery сделать некоторые кнопки воспроизведения звука во время clicked.This является HTML-код:Использование Angular.js для воспроизведения звука во время нажатия кнопки
<audio id="audio">
<source src="https://s3.amazonaws.com/freecodecamp/simonSound1.mp3"></source>
<source src="https://s3.amazonaws.com/freecodecamp/simonSound2.mp3"></source>
<source src="https://s3.amazonaws.com/freecodecamp/simonSound3.mp3"></source>
<source src="https://s3.amazonaws.com/freecodecamp/simonSound4.mp3"></source>
</audio>
<button class='t-l bt' ng-click='play_sound(0)'></button>
<button class='t-r bt' ng-click='play_sound(1)'></button>
<button class='b-l bt' ng-click='play_sound(2)'></button>
<button class='b-r bt' ng-click='play_sound(3)'></button>
Это мой код функции:
$scope.play_sound = function(order){
var audio = $('#audio')[order];
audio.play();
}
функция работает, когда я 0 передается в качестве аргумента и не проходя другие number.This, что я получил в консоли Google:
angular.js:13920 TypeError: Cannot read property 'play' of undefined
at b.$scope.play_sound (index.js:10)
at fn (eval at compile (angular.js:14817), <anonymous>:4:234)
at b (angular.js:15906)
at e (angular.js:25885)
at b.$eval (angular.js:17682)
at b.$apply (angular.js:17782)
at HTMLButtonElement.<anonymous> (angular.js:25890)
at HTMLButtonElement.dispatch (jquery.min.js:3)
at HTMLButtonElement.q.handle (jquery.min.js:3)
'$ ('# аудио')' возвращает * одиночный * элемент (как есть только один с этим 'id') и поэтому' $ ('# аудио') [1] 'и остальное не будет работать ... – kukkuz
Я думаю, что kukkuz прав, хотя я не могу найти его в документации. Имейте в виду, что объект jQuery может представлять более одного элемента HTML. Таким образом, '$ ('# audio') [order]', как вы его предполагали, не имеет смысла, а затем '[0]', '[1]' и т. Д. Должны означать элементы DOM в объекте jQuery (из которых здесь только один). Но я не знаю, как изменить источник. –