3

我正在尝试使用http://kolber.github.io/audiojs/demos/test6.html中的 audio.js 将 mp3 模块集成到我的 opencart 商店中。所以我按照http://forum.opencart.com/viewtopic.php?t=80116&p=372808中提到的步骤操作代码有问题,所以我修复了它。

但问题是当我加载页面时出现以下错误

Error loading: "undefined"

在此处输入图像描述

当我单击播放列表中的歌曲并单击播放器时,它会播放歌曲。但它仍然说未定义。

它实际上应该像 在此处输入图像描述

下面是代码 header.tpl

 <script src="/js/audiojs/audio.min.js"></script>
       <script>
              $(function() {
                // Setup the player to autoplay the next track
                var a = audiojs.createAll({
                  trackEnded: function() {
                    var next = $('ol li.playing').next();
                    if (!next.length) next = $('ol li').first();
                    next.addClass('playing').siblings().removeClass('playing');
                    audio.load($('a', next).attr('data-src'));
                    audio.play();
                  }
                });

            // Load in the first track
            var audio = a[0];
                first = $('ol a').attr('data-src');
            $('ol li').first().addClass('playing');
            audio.load(first);

            // Load in a track on click
            $('ol li').click(function(e) {
              e.preventDefault();
              $(this).addClass('playing').siblings().removeClass('playing');
              audio.load($('a', this).attr('data-src'));
              audio.play();
            });
            // Keyboard shortcuts
            $(document).keydown(function(e) {
              var unicode = e.charCode ? e.charCode : e.keyCode;
                 // right arrow
              if (unicode == 39) {
                var next = $('li.playing').next();
                if (!next.length) next = $('ol li').first();
                next.click();
                // back arrow
              } else if (unicode == 37) {
                var prev = $('li.playing').prev();
                if (!prev.length) prev = $('ol li').last();
                prev.click();
                // spacebar
              } else if (unicode == 32) {
                audio.playPause();
              }
            })
          });
        </script>

在产品.tpl

  <?php // Start of player ?>
        <?php if ($attribute_groups) { ?>
 <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
          <?php if ($attribute_group['name'] == 'Demo Tracks') { ?>

            <div class="player">
              <audio preload></audio>
                <ol>
                  <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
                    <?php //split name
                       $track = strtok($attribute['text'],"~");
                    ?>
                    <?php while ($track !== false) {
                      // probably a better way, but put the 2 into diff vars
                      $track_url = $track;
                      $track = strtok('~');
                      $track_desc = $track;
                      $track = strtok('~');
                    ?>.
                    <li>
                      <a href="#" data-src="<?php echo html_entity_decode($track_url); ?>"><?php echo $track_desc ?>
                    <?php } // end while ?>
                  <?php  } // end foreach?>
                </ol>
              </div>
            <?php } //if attribute_group ?>
 <?php }  ?>
          <?php } //if attribute ?>

任何帮助将不胜感激。

4

1 回答 1

3

查看您的 JS 代码,我可以看到您只使用这样的选择器

$('ol li')

这将找到<li>元素内的所有<ol>元素。虽然这通常应该可以正常工作,但很可能在您的模板中有另一个<ol><li>不包含播放列表条目的模板。

可以通过为您的播放列表使用classorid属性来快速解决此问题<ol>,因此它看起来像<ol id="playlist">. 那么唯一的选择器将是

$('ol#playlist li')
于 2014-09-25T07:42:19.493 回答