Javascript声音开始/停止和图像更改Part2



我想有一个小图像,当点击播放声音和改变到不同的图像。当按钮再次点击时,它会变回以前的图像并停止声音。

你可以把它想象成一个表示"开始"的按钮。当点击"开始"时,它循环播放声音并改变为"停止",当点击"停止"时,它回到开始,声音停止播放。

我试着使用这个代码,它完美地为图像工作,但我似乎不能得到不同的声音播放2个图像。

Javascript声音开始/停止和图像更改

我还找到了单独的代码来播放和停止这个脚本的声音:

<script>
     $(document).ready(function() {
    var playing = false;
    $('a#button').click(function() {
        $(this).toggleClass("down");
        if (playing == false) {
            document.getElementById('player').play();
            playing = true;
            $(this).text("stop sound");
        } else {
            document.getElementById('player').pause();
            playing = false;
            $(this).text("restart sound");
        }

    });
});
  </script>
<div>
<a id="button">play sound</a> 
                <audio id="player" src="mysound.mp3" preload="auto"></audio>

我可以把这两个组合在一起吗?或者我没有正确使用第一个javascript代码?

如果您想播放声音并更改图像,反之亦然,下面的操作将很好地工作:

<p>
   <a href="#" id="button"> <i class="fa fa-play fa-lg" aria-hidden="true"></i></a>
</p>
<audio id="player" src="http://soundbible.com/mp3/kids-record-player-daniel_simon.mp3" preload="auto"></audio>

JS

  var playing = false;
  $('#button').click(function() {
    if (playing == false) {
      document.getElementById('player').play();
      playing = true;
      $(this).find('i').removeClass('fa-play');
      $(this).find('i').addClass('fa-pause');
    } else {
      document.getElementById('player').pause();
      playing = false;
      $(this).find('i').removeClass('fa-pause');
      $(this).find('i').addClass('fa-play');
    }
  });

这个想法基本上是这样的:如果声音正在播放,那么交换类。这个例子可以扩展为切换图像的隐藏和显示。

参考这个工作示例。

希望有帮助。

编辑

如果我想在同一网页上使用多个图像。我还需要再加一些吗?删除类?还是为每个图像建立一个新函数?

实际上你可以对任意数量的图像使用这个函数。我们只需要概括一些事情,就可以开始了。

我做的第一件事是更改click事件的jQuery选择器。之前我们专门搜索具有唯一id #button的元素。为了绑定到多个按钮,我给它们起了相同的名字:$('[name=button]')

变量playing帮助我们跟踪用户是否按下按钮。为了控制是否单击按钮,我必须将变量playing作为属性移动到audio元素。这样每个音频元素"知道"它的当前状态(播放或暂停);

 <audio name="player" src="http://soundbible.com/mp3/kids-record-player-daniel_simon.mp3" preload="auto" data-playing="false"></audio>

注意data-playing="false"属性

JS

    var $button = $(this), // get the button
        $player = $button.next('[name=player]'); // button and player are siblings
    if ($player.data('playing') == false) {
      $player[0].play();
      $player.data('playing', true);
      ...
    } else {
      $player[0].pause();
      $player.data('playing', false);
      ...
    }

这里的技巧是更新playing属性以确保我们知道用户点击了播放或暂停

请参考上一个示例的更新版本

最新更新