首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角不改变来自json的音频源。

角不改变来自json的音频源。
EN

Stack Overflow用户
提问于 2016-05-17 08:50:02
回答 2查看 1.1K关注 0票数 0

我试图嵌入音频文件到HTML与音频标签。用于播放音频的src来自API,我有5-6个不同的音频文件.

当我单击playStart()时,播放的音频文件是相同的,尽管src显示了不同的链接

代码语言:javascript
复制
<tbody>
    <tr ng-repeat="val in values track by $index">
        <td ng-bind="$index +1">1</td>
        <td ng-bind="val._id">ED1500322</td>
        <td>
            <audio id="audioTag">
                <source controls ng-src="{{val.file}}"></source>
            </audio>

            <button class="play-btn" ng-click="playStart()"><img src="app_static/images/play.png"></button>
            <button class="play-btn" ng-click="playStop()">stop</button>
        </td>
        <td ng-bind="val.result"></td>

    </tr>
</tbody>

Js文件

代码语言:javascript
复制
$scope.playStart = function() {
    var audio = document.getElementById("audioTag");
    audio.load();
    audio.play();

};

$scope.playStop = function() {
    var audio = document.getElementById("audioTag");
    audio.pause();
    audio.currentTime = 0;
};

我只听到相同的音频剪辑,即使DOM显示链接是不同的

如能从api中获得音乐,请提供任何帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-17 09:10:07

使用类:

代码语言:javascript
复制
<tbody>
<tr ng-repeat="val in values track by $index">
    <td ng-bind="$index +1">1</td>
    <td ng-bind="val._id">ED1500322</td>
    <td>
        <audio class="audioTag">
            <source controls ng-src="{{val.file}}"></source>
        </audio>

        <button class="play-btn" ng-click="playStart($index)"><img src="app_static/images/play.png"></button>
        <button class="play-btn" ng-click="playStop($index)">stop</button>
    </td>
    <td ng-bind="val.result"></td>

</tr>

JS

代码语言:javascript
复制
$scope.playStart = function(index_) {
    var audio = document.getElementsByClassName("audioTag")[index_];
    audio.load();
    audio.play();

};

$scope.playStop = function() {
    var audio = document.getElementsByClassName("audioTag")[index_];
    audio.pause();
    audio.currentTime = 0;
};
票数 1
EN

Stack Overflow用户

发布于 2016-05-17 09:05:44

你的问题是

代码语言:javascript
复制
 document.getElementById("audioTag")

始终返回页面中的第一个元素。

您可以做的是更改id,这样每个音频元素都会有不同的id。

变化

代码语言:javascript
复制
<audio id="audioTag">

代码语言:javascript
复制
 <audio id="audioTag{{$index}}">

所以元素将有标签"audioTag1","audioTag2“。

之后,将对playStartplayStop函数的调用更改为:

代码语言:javascript
复制
playStart('audioTag{{$index}}')

因此,您将得到id作为参数。

你的职能是:

代码语言:javascript
复制
$scope.playStart = function(id) {
    var audio = document.getElementById(id);
    audio.load();
    audio.play();  
};

就这样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37271357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档