0

私はJavaスクリプトのアイデア全体にかなり慣れていないので、問題の解決策を見つけようとして本当に行き詰まっています。ブライトコーブが「すべてのプレイリスト 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);
    })
});
4

1 に答える 1

0

あなたが投稿したコードから、oCurrentMainVideoListはどこにも宣言されていないように見えるので、未定義と言っているのかもしれません...

それをグローバル変数として定義している場合は、その見た目からそうである必要があります。値が設定されていることを確認してください。ただし、グローバル変数を使用しないでください。関数の名前空間を作成してください。スコープ制御に役立ちます。

JS のベスト プラクティスを学びたい場合は、TekPub の次のビデオをご覧ください: JS_UpToSpeed

また、投稿する前に時間をかけてコードを確認し、読みやすくする必要があります。インデントがないためにコードが読みにくくなり、buildMAinVideoList に複数の大文字が含まれています。

于 2013-01-23T09:08:16.130 に答える