我对java脚本的整个想法都很陌生,我真的很难找到解决问题的方法。我已经使用了brightcove用于视频管理器的模板,该模板使用“获取所有播放列表URL”调用。我试图只是制作一个只有几个特定播放列表的菜单,并且在这样做时出现错误,无论我改变什么。截至目前我的主要错误是“Uncaught TypeError:无法读取未定义的属性'长度”。任何帮助都会非常感激。谢谢。
//Get PlayList by ID
function getPlaylistLindyURL(){
loadStart();
paging.playlistbyid = (paging.currentFunction == getPlaylistLindyURL)?paging.generic:paging.playlistbyid;
paging.currentFunction = getPlaylistLindyURL;
return apiLocation +
'?command=find_playlist_by_id&playlist_id=1990786315001&callback=showPlaylistByIDCallBack'
+ '&get_item_count=true&page_size=' + paging.size + '&page_number='+paging.playlistbyid
+'&token='+readToken;
//Playlist by ID callback
function showPlaylistByIDCallBack(o){
if(null == o.error){
oCurrentMainVideoList = o.items;
buildMAinVideoList();
doPageList(o.total_count, "Videos");
}else{
var message = (null!=o.error.message)?o.error.message:o.error;
alert("Server Error: "+ message);
}
loadEnd();
}
//For PlayList by ID
function buildMAinVideoList() {
//Wipe out the old results
$("#tbData").empty();
// Display video count
document.getElementById('divVideoCount').innerHTML = oCurrentMainVideoList.length + "Video";
document.getElementById('nameCol').innerHTML = "Video Name";
document.getElementById('headTitle').innerHTML = "All Videos";
document.getElementById('search').value = "Search Videos";
document.getElementById('tdMeta').style.display = "none";
document.getElementById('searchDiv').style.display = "none";
document.getElementById('checkToggle').style.display = "none";
$("span[name=buttonRow]").hide();
$(":button[name=delFromPlstButton]").hide();
//For each retrieved video, add a row to the table
var modDate = new Date();
$.each(oCurrentMainVideoList, function(i,n){
modDate.setTime(n.lastModifiedDate);
$("#tbData").append(
"<tr style=\"cursor:pointer;\" id=\""+(i)+"\"> \
<td>\
<input type=\"checkbox\" value=\""+(i)+"\" id=\""+(i)+"\" onclick=\"checkCheck()\">\
</td><td>"
+n.name +
"</td><td>"
+(modDate.getMonth()+1)+"/"+modDate.getDate()+"/"+modDate.getFullYear()+"\
</td><td>"
+n.id+
"</td><td>"
+((n.referenceId)?n.referenceId:'')+
"</td></tr>"
).children("tr").bind('click', function(){
showMetaData(this.id);
})
});
答案 0 :(得分:0)
从您发布的代码看起来oCurrentMainVideoList似乎没有在任何地方声明,所以这可能就是为什么它说它未定义...
如果你将它定义为一个全局变量,它必须是从它的外观,请确保你已经为它设置了一个值。但是你不应该使用全局变量,为你的函数创建命名空间,它有助于范围控制。
如果您想学习一些JS最佳实践,您应该从TekPub观看此视频: JS_UpToSpeed
你还应该花时间查看代码并在发布之前使其更具可读性,缺少缩进会使代码难以阅读,并且buildMAinVideoList中有多个大写字母。