SoundCloud Getters - getDuration

时间:2014-02-16 16:11:59

标签: javascript soundcloud

我正在尝试编写一个脚本,按下按钮后,它将显示SoundCloud中歌曲的持续时间。我也对API有点麻烦。我已阅读并重新阅读关于某些“回调”传递参数的行,但我仍然不明白。 “因此,每个getter方法都接受一个回调函数作为参数,当被调用时,它将被赋予getter方法的返回值。”

这是我的代码所在。我知道它不漂亮,但我只是想让这件事变得有效。

<!doctype html>
    <html>
    <head>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
      <script src="http://w.soundcloud.com/player/api.js"></script>
      <script>
       $(document).ready(function() {
         var widget = SC.Widget(document.getElementById('playing'));
         widget.bind(SC.Widget.Events.READY, function() {
           console.log('Ready...');
         });

         $('button').click(function() {
           widget.getDuration(function(sound));
         });
       });

       function sound(var time) {
        document.write(time);
       }
      </script>
    </head>
    <body>
                <iframe id="playing" 
                width="500" 
                height="400" scrolling="no" 
                frameborder="yes" 
                src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/66816173&amp;auto_play=false&amp;hide_related=false&amp;visual=true">
                </iframe>
      <button>Play / Pause</button>
    </body>
    </html>

1 个答案:

答案 0 :(得分:1)

您的代码中有两个错误的函数定义。 在developer.mozilla.org上,您可以找到一些非常好的javascript文档。 特别是,在此页面上,您可以了解如何正确定义函数: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions

返回您的代码:

1)getDuration soundcloud函数接受回调。 function(sound)不是有效的函数定义。

2)函数定义在参数名称

之前不需要var关键字

以下是您的代码,其中包含两项更正。它可以像你期望的那样工作。

var widget = SC.Widget(document.getElementById('playing'));
    widget.bind(SC.Widget.Events.READY, function() {
        console.log('Ready...');
    });

    $('button').click(function() {
        widget.getDuration(function(duration){
            alert(duration);
        });
    });
});

在这里你可以看到工作小提琴:http://jsfiddle.net/Ldc2N/

还有一件事:我看到在应该是回调的内容中,你打电话给document.write

function sound(time) { document.write(time); }

请注意,它仅在文档未准备好时才附加内容。文档准备就绪时调用int会完全覆盖其内容。