0

href で関数を呼び出そうとしていますが、未定義の関数が表示されていますが、アルバムループ内で呼び出すと関数自体が機能しています。href を追加した後に関数を呼び出す他の方法はありますか? アンカーのIDでjquery onclickを使用しようとしましたが、それも機能せず、エラーも発生しませんでした。どのように電話すればよいか考えていますか?

function getPhotosByAlbumID(albumID){
    FB.api('/'+ albumID + '/photos',{ limit: 5000, fields: 'source' }, function(photos) {
        $(photos.data).each(function(index, value){
            console.log(value.source);
        });
    });
}

FB.api('/me/albums',{ limit: 5000, fields: 'id,name,count,cover_photo,link' }, function(me_album) {
    $(me_album.data).each(function(index, value){                           
        FB.api('/'+value.id+'/picture',{ limit: 5000 }, function(picture) {                     
            $('#facebook-cover').append('<li id="'+value.id+'"><a href="javascript:getPhotosByAlbumID('+value.id+');" id="album"><img src="'+picture.data.url+'" /></a></li>'); 
        });
    });
}); 

エラー: Uncaught ReferenceError: getPhotosByAlbumID が定義されていません

すべてがそのように追加されました..

<ul id="facebook-cover">
<li id="4758611198834"><a href="javascript:getPhotosByAlbumID(4758611198834);" id="album"><img src="image-link"></a></li>   
</ul>
4

3 に答える 3

1

試す

var li=$('<li id="'+value.id+'"></li>');
var anchor=$('<a href="#" id="album"></a>');
anchor.click(function(){
getPhotosByAlbumID(value.id);
return false;

});
var img=$('<img src="'+picture.data.url+'" />');

anchor.append(img);
li.append(anchor);

このようにして、クリックイベントが機能する必要があります。getPhotosByAlbumID(); 内にエラーがない限り。同じ関数から false を返すこともできます

于 2013-03-21T10:19:48.377 に答える
0

JS コードにかなりの量のインデントがあったことに気付きました。あなたgetPhotosByAlbumIDの機能はおそらく他の機能の中にありますか?このようなもの:

var module = (function () {
    ...
    function getPhotosByAlbumID(albumID){
    ...
}

その場合は、アクセス可能にする必要があります。これは、役立つモジュールパターンに関する情報です。

于 2013-03-21T10:47:57.430 に答える
0

私の推測では、html があるページに js ファイルが適切に含まれていない可能性があります。これが問題かどうかをテストする簡単な方法の 1 つは、javascript をリンクと同じファイルに入れることです。これで問題が解決する場合は、インクルード エラーが発生しています。

そのようです:

<script type="text/javascript">
function getPhotosByAlbumID(albumID){
    FB.api('/'+ albumID + '/photos',{ limit: 5000, fields: 'source' }, function(photos) {
        $(photos.data).each(function(index, value){
            console.log(value.source);
        });
    });
}

FB.api('/me/albums',{ limit: 5000, fields: 'id,name,count,cover_photo,link' }, function(me_album) {
    $(me_album.data).each(function(index, value){                           
        FB.api('/'+value.id+'/picture',{ limit: 5000 }, function(picture) {                     
            $('#facebook-cover').append('<li id="'+value.id+'"><a href="javascript:getPhotosByAlbumID('+value.id+');" id="album"><img src="'+picture.data.url+'" /></a></li>');
        });
    });
});
</script>

<ul id="facebook-cover">
<li id="4758611198834"><a href="javascript:getPhotosByAlbumID(4758611198834);" id="album"><img src="image-link"></a></li>   
</ul> 
于 2013-03-21T10:42:22.720 に答える