【问题标题】:Pause previous audio when new audio is played播放新音频时暂停之前的音频
【发布时间】:2020-10-09 05:13:41
【问题描述】:

当用户点击一个项目时,我会像这样动态添加一个独特的音频元素并播放音频。

      let sound = document.createElement("audio");
      sound.id = "audio" + e.target.id;
      app.audioBeingPlayed = sound.id;
      sound.controls = "controls";
      sound.src = selectedVoice[0][1].sample;
      sound.type = "audio/mpeg";
      sound.play() 

在执行此操作之前,我会检查音频是否已在播放并希望暂停该音频。

我试过这样做

  if(app.audioBeingPlayed) {
    $('audio #'+ app.audioBeingPlayed).pause()
  }

在上面的代码之前。

单击一个项目时,它会播放音频。但是当另一个项目被点击时,它会给出一个错误提示

$(...).pause 不是函数

我只想暂停正在播放的音频并播放在第一个块中的代码中创建的新音频。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery audio


    【解决方案1】:

    你需要改变你的代码

    if(app.audioBeingPlayed) {
        $('audio #'+ app.audioBeingPlayed).pause() // $('audio #'+ app.audioBeingPlayed) is not the audio object.
      }
    

    到这里

    ....
    ....
    
    app.audioBeingPlayed = e.target.id; // set the correct target id.
    if(app.audioBeingPlayed) {
        $('#'+ app.audioBeingPlayed).pause() // $('#'+ app.audioBeingPlayed) is the audio object so play/pause will work.
    
    
    //or directly use the id to pause.
    $('#'+ e.target.id).pause() 
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      相关资源
      最近更新 更多