2014-06-17 63 views
0

我在想如何替换函数中的变量并用另一个函数调用该函数。我正在制作一个可显示视频的YouTube视频。我想在用户点击时加载一个函数。我已经在调用将显示播放列表的功能,但是我想在点击导航链接时显示另一个播放列表。我想更改加载特定提要的变量。任何帮助将非常感激。谢谢如何用另一个函数替换局部变量来调用函数

<script type="text/javascript"> 

    var feedUrl = ""; 

    function loadFeedAPI() { 
     google.load("feeds", "1"); 
     google.setOnLoadCallback(initialize); 
    } 

    function playVideo() { 
     //Examples of how to assign the Colorbox event to elements 
     $(".youtubeThumb").colorbox({ iframe: true, innerWidth: 640, innerHeight: 390 }); 
    }; 

    function initialize(feedUrl) { 

     $(".youtubeFeed").empty(); 
     feedUrl = "http://gdata.youtube.com/feeds/api/playlists/PLlVlyGVtvuVlzDWbR0rXf1YnpJ9JL74FV"; 

     new google.feeds.lookupFeed(feedUrl, function (result) { 

      if (result.error || !result.url) { 
       $('#videocomm').hide(); 
       return; 
      } 

      // get the feed items 
      var feed = new google.feeds.Feed(result.url); 
      feed.setNumEntries(25); 

      feed.load(function (result) { 

       // write out the feed data 
       var container = $(".youtubeFeed"); 
       var totalcount = result.feed.entries.length; 

       for (var i = 0; i < result.feed.entries.length; i++) { 
        var entry = result.feed.entries[i]; 
        var vidhash = /=(.*)&(.*)$/.exec(entry.link)[1]; 
        var videoParmeters = "?rel=0&autohide=1&showinfo=0&autoplay=1&modestbranding=1&amp?vq=hd1080;wmode=transparent"; 
        var VidTitleMaxLength = 42; 

        var countVidTitleLength = entry.title.valueOf().length; 
        var joinName = entry.title.split(/[ ,]+/).join(''); 
        var joinNameLength = joinName.valueOf().length; 

        var strtemp = entry.title.substr(0, VidTitleMaxLength) + "..."; 

        console.log(strtemp + joinNameLength); 

        container.append('<li><div><a class="youtubeThumb" href="http://www.youtube.com/embed/' + vidhash + videoParmeters + '" title="' + entry.title + '"><img src="https://img.youtube.com/vi/' + vidhash + '/2.jpg" /><br />' + '<p class="videoTitle">' + strtemp + '</p>' + '</a></div></li>\n'); 
       } 
       playVideo(); 
      }); 
     }); 
    } 
    function loadTest(feedUrl) { 
     feedUrl.initialize("http://gdata.youtube.com/feeds/api/playlists/PLlVlyGVtvuVnAg43cejh4HGzap_MPRNhV"); 


     alert("hi"); 

     return false; 
    } 
    loadFeedAPI(); 
</script> 


    <div id="navigation"> 
      <ul id="tsSideNavUL"> 
       <li><a href="javascript:initialize();">The Roots of Our Vine</a></li> 
       <li><a href="javascript:loadTest();">A Soiree From Start to Finish</a></li> 
       <li><a href="#">Booking</a></li> 
       <li><a href="#">Selling</a></li> 
       <li><a href="#">Enrolling</a></li> 
      </ul> 
     </div> 

回答

0

您的问题转到JavaScript的核心概念,您应该可能阅读,也许更深入。也就是说,你不能从一个函数内访问另一个函数内的变量,因为函数会创建一个封闭范围。你可以做的是把所有的功能放到一个对象上。

var youtube = { 
    feedUrl: "http://gdata.youtube.com/feeds/api/playlists/PLlVlyGVtvuVlzDWbR0rXf1YnpJ9JL74FV", 

    loadFeedApi: function() { 
    google.load("feeds", "1"); 
    google.setOnLoadCallback(initialize); 
    }, 

    playVideo: function() { 
    //Examples of how to assign the Colorbox event to elements 
    $(".youtubeThumb").colorbox({ iframe: true, innerWidth: 640, innerHeight: 390 }); 
    }, 

    initialize: function (url) { 

    $(".youtubeFeed").empty(); 
    var feedUrl = url || this.feedUrl; 

    new google.feeds.lookupFeed(feedUrl, function (result) { 

     if (result.error || !result.url) { 
     $('#videocomm').hide(); 
     return; 
     } 

     // get the feed items 
     var feed = new google.feeds.Feed(result.url); 
     feed.setNumEntries(25); 

     feed.load(function (result) { 

     // write out the feed data 
     var container = $(".youtubeFeed"); 
     var totalcount = result.feed.entries.length; 

     for (var i = 0; i < result.feed.entries.length; i++) { 
     var entry = result.feed.entries[i]; 
     var vidhash = /=(.*)&(.*)$/.exec(entry.link)[1]; 
     var videoParmeters = "?rel=0&autohide=1&showinfo=0&autoplay=1&modestbranding=1&amp?vq=hd1080;wmode=transparent"; 
     var VidTitleMaxLength = 42; 

     var countVidTitleLength = entry.title.valueOf().length; 
     var joinName = entry.title.split(/[ ,]+/).join(''); 
     var joinNameLength = joinName.valueOf().length; 

     var strtemp = entry.title.substr(0, VidTitleMaxLength) + "..."; 

     console.log(strtemp + joinNameLength); 

     container.append('<li><div><a class="youtubeThumb" href="http://www.youtube.com/embed/' + vidhash + videoParmeters + '" title="' + entry.title + '"><img src="https://img.youtube.com/vi/' + vidhash + '/2.jpg" /><br />' + '<p class="videoTitle">' + strtemp + '</p>' + '</a></div></li>\n'); 
     } 
     playVideo(); 
    }); 
    }); 
    }, 

    loadTestUrl: function(url) { 
    this.initialize(
     "http://gdata.youtube.com/feeds/api/playlists/PLlVlyGVtvuVnAg43cejh4HGzap_MPRNhV" 
    ); 


    alert("hi"); 

    return false; 
    } 

} 

,然后你的标记

<div id="navigation"> 
    <ul id="tsSideNavUL"> 
    <li><a href="javascript:youtube.initialize();">The Roots of Our Vine</a></li> 
    <li><a href="javascript:youtube.loadTest();">A Soiree From Start to Finish</a></li> 
    <li><a href="#">Booking</a></li> 
    <li><a href="#">Selling</a></li> 
    <li><a href="#">Enrolling</a></li> 
    </ul> 
</div> 

注意在函数调用以 'YouTube'。

+0

得到一个错误...无法读取未定义的属性'lookupFeed' – user2512393

+0

nvrmind得到它的工作。只是有问题现在显示它到容器 – user2512393

+0

我不想有一个关于追加的新部分。但现在我遇到问题的视频附加到容器。有任何想法吗? – user2512393

相关问题