2013-03-21 110 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这可能是有用的。