javascript-错误加载:将audio.js与Opencart一起使用时显示音频播放列表时“未定义”

我试图使用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>

在product.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 ?>

任何帮助将不胜感激.

解决方法:

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

$('ol li')

它将找到所有< li> < ol>内的元素元件.尽管这通常可以正常工作,但很有可能在您的模板中还有另一个< ol< li>不包含您的播放列表条目.

可以通过对播放列表< ol>使用class或id属性来实现此目的的快速解决方案,例如< ol id =“ playlist”>.那么唯一的选择器将是

$('ol#playlist li')
上一篇:mysql-基于Opencart重量的运输


下一篇:php-检查OpenCart中的购物车是否为空