【问题标题】:href javascript function callhref javascript函数调用
【发布时间】:2013-03-21 10:10:57
【问题描述】:

我试图在 href 上调用一个函数,但它显示未定义的函数,但是当我在专辑循环中调用它时,该函数本身正在工作。附加href后还有其他调用函数的方法吗?我尝试使用带有anchor 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>'); 
        });
    });
}); 

错误:未捕获的 ReferenceError:未定义 getPhotosByAlbumID

所有都像这样附加..

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

【问题讨论】:

  • 搜索“javascript 范围”。还要注意重复的 ID,最好将处理程序附加到外部 JS 中,而不是 HTML。

标签: php javascript jquery


【解决方案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

【讨论】:

    【解决方案2】:

    我的猜测是 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> 
    

    【讨论】:

      【解决方案3】:

      我注意到您最初的 JS 代码中有大量缩进。您的 getPhotosByAlbumID 函数是否包含在其他函数中?像这样的:

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

      如果是这样,您需要使其可访问。这是some info on the module pattern,可能有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 2011-10-11
        • 1970-01-01
        • 2015-11-02
        • 1970-01-01
        相关资源
        最近更新 更多