javascript - HTML5 音频播放器停止和暂停按钮不起作用

标签 javascript xml html

我的播放按钮可以播放,音量增大和音量减小按钮可以工作,但暂停按钮和停止按钮不起作用。此外,它在 Chrome 中不起作用,但在 Firefox 和 Internet Explorer 中起作用。那么我该如何解决这个问题呢?谢谢。

这是我的代码

index.html

<!DOCTYPE html>
<html ng-app="plunker">
<head>
    <title>app</title>
    <link rel="stylesheet" type="text/css" href="css/main.css" media="screen" />
    <link href="menu_source/styles.css" rel="stylesheet" type="text/css">
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">

    <!-- Optional theme -->
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap-theme.min.css">
    <link rel="stylesheet" href="dist/css/bootstrap.min.css" rel="stylesheet" type="text/css">
    <!-- Latest compiled and minified JavaScript -->
    <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
    <script src="music.js"></script>
    <script src="example.js"></script>
    <script src="javascript/main.js"></script>
    <script src="angular.min.js"></script>
    <script>
        angular.module('myModule', ['ui.bootstrap']);
        var player;
        var intv;
        var slider;

        window.onload = function () {
            document.getElementById('btnPlay').addEventListener('click', playMusic, false);
            document.getElementById('btnPause').addEventListener('click', playMusic, false);
            document.getElementById('btnStop').addEventListener('click', playMusic, false);
            document.getElementById('btnVolUp').addEventListener('click', playMusic, false);
            document.getElementById('btnVolDown').addEventListener('click', playMusic, false);
            player = document.getElementById('player');
            slider = document.getElementById('sliderTime');
            slider.addEventListener('change', reposition, false);
            getMusicList();
        }

        function reposition() {
            player.currentTime = slider.value;
        }

        function volUp() {
            if (player.volume < 1) {
                player.volume += 0.1;
                console.log(player.volume);
            } else {
                player.volume = 1;
            }
        }

        function volDown() {
            if (player.volume > 0) {
                player.volume -= 0.1;
                console.log(player.volume);
            } else {
                player.volume = 0;
            }
        }

        function playMusic() {
            player.play();
            intv = setInterval(update, 100);
            slider.max = player.duration;
        }

        function update() {
            document.getElementById('songTime').innerHTML = millisToMins(player.currentTime);
            slider.value = player.currentTime;
        }

        function pauseMusic() {
            player.pause();
            clearInterval(intv);
        }

        function millisToMins(seconds) {
            var numminutes = Math.floor((((seconds % 31536000) % 86400) % 3600) / 60);
            var numseconds = (((seconds % 31536000) % 86400) % 3600) % 60;
            if (numseconds >= 10) {
                return "Time Elapsed:" + numminutes + ":" + Math.round(numseconds);
            } else {
                return "Time Elapsed: " + numminutes + ":0" + Math.round(numseconds);
            }
        }

        function stopMusic() {
            player.plause();
            player.currentTime = 0;
            clearInterval(myInterval);
        }

        function getMusicList() {
            var parser = new DOMParser();
            xmlDocument = parser.parseFromString(xml, "text/xml");
            var elementsArray = xmlDocument.documentElement.getElementsByTagName('composition');
            var arrayLength = elementsArray.length;
            var output = "<table>";
            for (var i = 0; i < arrayLength; i++) {
                var title = elementsArray[i].getElementsByTagName('title')[o].firstChild.nodeValue;
                var composer = elementsArray[i].getElementsByTagName('composer')[0].firstChild.nodeValue;
                var time = elementsArray[i].getElementsByTagName('time')[0].firstChild.nodeValue;
                var fileName = elementsArray[i].getElementsByTagName('filename')[0].firstChild.nodeValue;
                output += "<tr>";
                output += ("<td onclick='songSelect(\"" + fileName + "\")'>" + title + " By: " + composer + "</td>");
                output += "</tr>"

            }
            output += "</table>";
            document.getElementById('musicList').innerHTML = output;
        }

        function songSelect(fn) {
            document.getElementById('player').src = fn;
            playMusic();
        }
    </script>
    <style>
        #musicList td {
            border: 1px solid black;
            padding: 3px;
        }
        #musicList td:hover {
            background-color: #990000;
            color: white;
        }
    </style>
</head>
<body>
    <div id="content"></div>
    <div id="content1">
        <div id="audioPlayer">
            <audio id="player">
                <source src="sleepAway.ogg" type="audio/ogg">
                    <source src="sleepAway.mp3" type="audio/mpeg">
            </audio>
            <button onclick="playMusic()" id="btnPlay">Play</button>
            <button onclick="pauseMusic()" id="btnPause">Pause</button>
            <button onclick="stopMusic()" id="btnStop">Stop</button>
            <button onclick="volUp()" id="btnVolUp">Volume Up</button>
            <button onclick="volDown()" id="btnVolDown">Volume Down</button>
            <span id="songTime"></span>

            <input id="sliderTime" type="range" min="0" value="0" />
            <div id="musicList"></div>
</body>
</html>

音乐.js

var xml='<?xml version="1.0"?>';
xml +='<music>';
xml +=' <composition>';
xml +=' <title>O Mio Babbino Caro</title>';
xml +=' <composer>Puccini</composer>';
xml +=' <time>2:12</time>';
xml +=' <filename>SleepAway.mp3</filename>';
xml +=' </composition>';
xml +=' <composition>';
xml +=' <title>2:57</time>';
xml +=' <filename>gershwin.mp3</filename>';
xml +=' </composition>';
xml +=' <composition>';
xml +=' <title>The Man I Love</title>';
xml +=' <composer>Gershwin</composer>';
xml +=' <time>2:57</time>';
xml +=' <filename>gershwin.mp3</filename>';
xml +=' </composition>';
xml +=' <composition>';
xml +=' <title>2:57</time>';
xml +=' <filename>gershwin.mp3</filename>';
xml +=' </composition>';
xml +=' <composition>';
xml +=' <titleAllegro</title>';
xml +=' <composer>Beethoven</composer>';
xml +=' <time>3:45</time>';
xml +=' <filename>piano.mp3</filename>';
xml +=' </composition>';
xml +=' <composition>';

最佳答案

所有事件监听器都指向:“playMusic”,因此它们都充当播放按钮。

关于javascript - HTML5 音频播放器停止和暂停按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21466461/

相关文章:

javascript - 如何从 Internet Explorer 中删除共享点托管应用程序中的滚动条

xml - 如何编写 RDF Schema?

jquery - 如何从不同的类 xpath 获取 html 元素?

javascript - 离屏静音自动播放视频在 Android 上不起作用

javascript - 为什么这不会收到返回值?

c# - 将 JavaScript 确认提示添加到 ASP.NET GridView 中的删除命令按钮?

java - 如何在通过 SAX Xerces 解析 XML 文档时引用 XSD 架构位置?

html - 如何在div中制作固定高度的div

html - Ionic - 栏页脚 css

javascript - 检查 JavaScript 中的键是否有值