javascript - 将音频元素链接在一起 HTML/AngularJS

标签 javascript html angularjs

我不完全确定如何运行与网页更新同步的功能。

我有一个复选框,如果选中则运行一个函数。

HTML:

<input type="checkbox" value="data.id" id="status" ng-model="data.status" class="Form-label-checkbox" ng-change="IfCheck(data.Url)">

IfCheck 函数将 url 添加到数组 $scope.ids

JavaScript://一种伪代码

$scope IfCheck(url){
    $scope.ids.push(object);}

$scope.Playall = function(){
    var audioElements = document.getElementsByTagName("audio");
    for(var i = 0; i < audioElements.length; i++){
        audioElements[i].play();
    }
}

到目前为止,这似乎运作良好。数组 ids 会动态填充 URL。然后,我在此数组上运行 ng-repeat,并创建一个以源作为 url 的元素。这也有效。

HTML:

<div ng-repeat="data in ids">
<audio controls>
                    <source src="{{data.Url | trustUrl}}" id = "Synth.wav" type="audio/mpeg">
                    Your browser does not support the audio element.
                    </audio> </div>

我现在的问题是这样的。假设我选中两个框,并动态创建两个音频播放器。如果我点击播放按钮,他们就会播放音乐。有没有办法以某种方式制作一个按钮,以便它可以同时播放这两个按钮?我想到了类似的事情

<button ng-click = "Playall()"> Playall </button> 

但我不确定如何编写函数来“链接”到创建的元素。

最佳答案

Playall() 函数看起来像这样:

$scope.Playall = function(){
    Array.from(document.getElementsByTagName("audio")).forEach(audio => audio.play());
}

或者:

$scope.Playall = function(){
    var audioElements = document.getElementsByTagName("audio");
    for(var i = 0; i < audioElements.length; i++){
        audioElements[i].play();
    }
}

关于javascript - 将音频元素链接在一起 HTML/AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42839887/

相关文章:

javascript - 向下滚动时更早触发一个类

Angularjs:查找指令的所有实例

javascript - 使用 jquery 将 tr 元素添加到另一个表中

javascript - 如何获取传单 slider 的开始和结束

javascript - 我无法理解使用 Javascript 执行以下数学方程

javascript - jquery.js 是否缓存在浏览器中?

javascript - (HTML/Javascript) - 两点之间的距离计算器

javascript - 点击页面时页面闪烁 | jQuery .load()

html - 自定义 ol li 缩进

javascript - 应该不用 jQuery 学习 angularjs 吗?