javascript - 函数没有被调用

标签 javascript html audio local-storage

我的 play() 函数没有被调用。我真的不知道为什么。

我有以下代码:

var mp = document.getElementById("mp3");
   function play() {
   mp.play();
   console.log("hello");
}

function scan() {
  cordova.plugins.barcodeScanner.scan(
    function(result) {
      if (result.text == "home") {
        var atHomeRepQR = '<div class="container-h"><div class="card"><div class="item item-text-wrap "><i class="icon ion-unlocked"></i> Diese Ansicht ist entsperrt.</div></div><button onclick="play()" class="button button-positive btn">Play</button></div><audio id="mp3"><source src="video/ping.mp3" type="audio/mpeg"></audio>';
        save("atHomeSaveQR", atHomeRepQR);
      }
      if (result.text == "street") {
        var atStreetRepQR = '<div class="container-s"><div class="card"><div class="item item-text-wrap "><i class="icon ion-unlocked"></i> Diese Ansicht ist entsperrt.</div></div><button onclick="play()" class="button button-positive btn">Play</button></div><audio id="mp3"><source src="video/ping.mp3" type="audio/mpeg"></audio>';
        save("atStreetSaveQR", atStreetRepQR);
      }
      if (result.text == "bern") {
        var atBernRepQR = '<div class="container-b"><div class="card"><div class="item item-text-wrap "><i class="icon ion-unlocked"></i> Diese Ansicht ist entsperrt.</div></div><button onclick="play()" class="button button-positive btn">Play</button></div><audio id="mp3"><source src="video/ping.mp3" type="audio/mpeg"></audio>';
        save("atBernSaveQR", atBernRepQR);
      }
      if (result.text == "bahnhof") {
        var atBahnhofRepQR = '<div class="container-ba"><div class="card"><div class="item item-text-wrap "><i class="icon ion-unlocked"></i> Diese Ansicht ist entsperrt.</div></div><button onclick="play()" class="button button-positive btn">Play</button></div><audio id="mp3"><source src="video/ping.mp3" type="audio/mpeg"></audio>';
        save("atBahnhofSaveQR", atBahnhofRepQR);
      }
      if (result.text == "atelier") {
        var atAtelierRepQR = '<div class="container-at"><div class="card"><div class="item item-text-wrap "><i class="icon ion-unlocked"></i> Diese Ansicht ist entsperrt.</div></div><button onclick="play()" class="button button-positive btn">Play</button></div><audio id="mp3"><source src="video/ping.mp3" type="audio/mpeg"></audio>';
        save("atAtelierSaveQR", atAtelierRepQR);
      }

    },
    function(error) {
      alert("Scanning failed: " + error);
    }
  );
}

语法

<button onclick="play()" class="button button-positive btn">Play</button></div><audio id="mp3"><source src="video/ping.mp3" type="audio/mpeg"></audio>

当你问我时是正确的。

我的错误是什么?

最佳答案

您的 mp 变量可能在 #mp3 被解析之前被初始化。您应该将任何类似的静态代码包装在 document.ready block 中,以便其执行被推迟到页面加载完成。

理想情况下,这将使用 jQuery 实现:

var mp;
$(document).ready(function() {
    mp = document.getElementById("mp3");
});

如果没有它,这对大多数现代浏览器来说就足够了(参见 this answer ):

var mp;
document.addEventListener("DOMContentLoaded", function(event) { 
    mp = document.getElementById("mp3");
});

关于javascript - 函数没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34992580/

相关文章:

php - 我需要什么php header 来播放音频文件

javascript - 通过 websocket 接收文件并启动下载对话框

javascript - Node.js 中的 sqlite3 不从 INSERT 回调返回 lastID

javascript - 如何在每次点击移动图形时知道它的宽度和高度?

javascript - 通过drawText水平缩放字体?

未经许可的 JavaScript Facebook Fan Gate

html - 在 wordpress 主题中更改字体(和相关设置)

android - 视频作为启动画面而不是图片

c++ - 在C++/Ubuntu中录制来自音频输入的原始音频

javascript - 如何使用javascript计算textarea中输入字符的数量?