如何使用一个按钮切换音频播放/暂停

时间:2018-05-03 11:02:10

标签: javascript html audio playback pause

之前我从未真正使用过javascript,但我尝试使用谷歌搜索解决方法来制作音频的播放/暂停按钮 - 我发现这个网站上的一个好的和简单的解决方案: How to toggle audio play() pause() with one button or link? (PS。我没有足够的声誉来评论冰人的解决方案并直接问他可能出现的问题 - 如果可以,我会有。)

但是,当我将代码片段粘贴到我的文档中时,没有任何反应(生成的文本无法点击)。 你们有些人可以看一看,告诉我我做错了什么吗?它很可能是愚蠢的,但我自己也看不到它。

到目前为止

Index.html:

<!DOCTYPE html>
<html>
<head>
	<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Ukendt Navn ...</title>
    <script>
        var myAudio = document.getElementById("myAudio");
        var isPlaying = false;

        function togglePlay() {
        if (isPlaying) {
            myAudio.pause()
        } else {
            myAudio.play();
        }
        };
        myAudio.onplaying = function() {
        isPlaying = true;
        };
        myAudio.onpause = function() {
        isPlaying = false;
        };
    </script>
    <style type="text/css">
        #content {
            border: 1px solid blue;
            margin: auto;
            max-width: 20vw;
            margin-top: 30vw;
            color: black;
        }
	</style>
</head>
<body>
    <div id="content">
        <audio id="myAudio" src="birds.mp3" preload="auto"></audio>
        <a onClick="togglePlay()">Click here to hear.</a>
    </div>
</body>
</html>

我的测试网站:http://wyrdling.com/other/ukendtnavn/

1 个答案:

答案 0 :(得分:3)

您尝试在加载元素之前调用document.getElementById("myAudio"),因此您可以在页面完全加载后调用它,或者将脚本放在body标记结束之前。

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Ukendt Navn ...</title>
    <script>
        window.addEventListener('load', function(){
            var myAudio = document.getElementById("myAudio");
            
            myAudio.onplaying = function() {
              isPlaying = true;
            };
            myAudio.onpause = function() {
              isPlaying = false;
            };
        });
        
        var isPlaying = false;
        
        function togglePlay() {
            if (isPlaying) {
                myAudio.pause()
            } else {
                myAudio.play();
            }
        }
    </script>
    <style type="text/css">
        #content {
            border: 1px solid blue;
            margin: auto;
            max-width: 20vw;
            margin-top: 30vw;
            color: black;
        }
	</style>
</head>
<body>
    <div id="content">
        <audio id="myAudio" src="http://wyrdling.com/other/ukendtnavn/birds.mp3" preload="auto"></audio>
        <a onClick="togglePlay()">Click here to hear.</a>
    </div>
</body>
</html>