2013-03-21 62 views
0

我想調用一個函數在href但它顯示未定義的函數,但函數本身正在工作,當我在專輯循環內調用它。在追加href之後有沒有其他方法可以調用函數?我嘗試使用jQuery的onclick與錨的ID,但也不起作用,並沒有錯誤。任何想法我應該怎麼打電話?href 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>'); 
     }); 
    }); 
}); 

錯誤:未捕獲的ReferenceError:getPhotosByAlbumID沒有定義

所有像這樣追加..

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

搜索'javascript範圍'。還要注意重複的ID,並且最好將你的處理程序附加到你的外部JS而不是HTML中。 – ahren 2013-03-21 10:12:43

回答

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

+0

謝謝你!它觸發點擊現在:) – zaw 2013-03-22 02:17:57

0

我的猜測是js文件沒有正確地包含在html所在的頁面中。一個簡單的測試方法就是將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> 
0

我注意到你原本在您的JS代碼縮進的量顯著。您的getPhotosByAlbumID功能可能在其他一些功能中嗎?類似這樣的:

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

如果是這樣您需要使其可訪問。這裏有some info on the module pattern這可能是有用的。