虾仁A 2023-05-17 20:59 采纳率: 78.8%
浏览 43
已结题

vue3定义函数失败

用vue3的组合式API定义了一个函数用来控制audio标签的暂停与播放,但在点击span标签的时候控制台提示 audio.pause() is not function

function play () {
  if (audio.paused) {
    audio.play()
  } else {
    audio.pause()
  }
}

  <span class="iconfont icon-bofang1" v-if="isplay" @click="play"></span>
   <span class="iconfont icon-bofang_" @click="play" v-else></span>

如图

img

  • 写回答

4条回答 默认 最新

  • 和你一起去月球 全栈领域新星创作者 2023-05-17 21:37
    关注

    应该是audio 没有获取到,可以试一下下面的代码。

    <script setup lang=ts>
    import { ref, onMounted, nextTick } from 'vue'
      
    const msg = ref('Audio TEST!')
    
    let isPlay = ref(false);
    // 第一种,用ref获取dom  
    const audioTest = ref<any>(null);
      
    let audioRef;  
      
    function play () {
    //  第二种,用document.getElementById获取
      audioRef = document.getElementById("audio");
      console.log(isPlay.value)
      if (audioRef.paused) {
        isPlay.value = false;
        audioRef.play()
      } else {
        isPlay.value = true;
        audioRef.pause()
      }
    }
    onMounted(() => {  
      console.log(audioTest.value)
    })
     
    </script>
    
    <template>
      <h1 >{{ msg }}</h1>  
      <span @click="play">{{!isPlay ? "暂停" : "播放"}}</span>
      
      <audio ref="audioTest" id="audio" src="http://music.163.com/song/media/outer/url?id=317151.mp3" type="audio/mpeg" autoplay></audio>
    </template>
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 5月17日

悬赏问题

  • ¥15 SQL Server下载
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求