为什么我的对象返回未定义?

凯特

在我的文档就绪功能中,我创建了一个对象videoList,当我检查并逐步遍历代码时,该对象实际上确实存在了很短的时间。但是,在其创建后不久,它就被返回,而不是由另一个函数定义。我的代码如下:

$(document).ready(function(){
    var videoList = new Object();
    videoList.videoPlaylist = [];
    videoList.addNew = function(data){
        $('.videoPlayer iframe').first().remove();
    }
    videoList.removeOld = function(){

    }

});

它位于一个名为video.js的文件中。在另一个文件buffer.js中,该文件在video.js之后加载,但不包含在ready函数中:

function loadTracks(playlistID){
    if(GoogleAuth.currentUser.get().hasGrantedScopes(SCOPE)){
         var request = gapi.client.request({
             'method':'GET',
             'path':'/youtube/v3/playlistItems',
             'params':{
                'playlistId':playlistID,
                'part':'snippet',
                'maxResults':'15',
                'key':'AIzaSyD0OY6xhl9gP9CmPXvU-rN-purRDaTrip8'
             }
         });
        request.execute(function(response){
            $('.playlistContainer').html('');
            response.items.forEach(function(element){
                $('.playlistContainer').append('<div class="songTrack"><img src="'+element.snippet.thumbnails.medium.url+'"/><span data-videoId = "'+element.snippet.resourceId.videoId+'">'+element.snippet.title+'</span></div>');
            });

            $('.songTrack').click(function(){
                var data = $(this).data('videoid');
                videoList.addNew(data);
                console.log('I was clicked');
            });
            console.log(response);
        });
    }
}

要点是,它将视频列表添加到容器中,每个视频都应可单击。videoList对象最终将保存大量视频,而addNew和removeOld将处理数组。我仍在学习对象,但是从我收集的信息来看,videoList对象是否应该在全局范围内并且可以通过loadTracks()函数访问

最喜欢的

我认为问题在于您是在jQuery函数范围内声明变量,而不是在文档准备就绪之外全局声明变量。尝试类似的方法:

var videoList = new Object();
$(document).ready(function(){
   ...
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章