TypeError:无法读取未定义的属性“posts”

时间:2017-11-09 10:26:03

标签: javascript

我从我正在使用的收藏夹Wordpress插件中获得Uncaught TypeError: Cannot read property 'posts' of undefined。我试过问插件的创建者,但没有得到回应。

错误来自此功能:

plugin.setButtonData = function()
{
    plugin.data.postid = $(plugin.activeButton).attr('data-postid');
    plugin.data.siteid = $(plugin.activeButton).attr('data-siteid');
    plugin.data.favorite_count = $(plugin.activeButton).attr('data-favoritecount');
    plugin.data.site_index = plugin.utilities.siteIndex(plugin.data.siteid);
    plugin.data.site_favorites = Favorites.userFavorites[plugin.data.site_index].posts; 
    if ( plugin.data.favorite_count <= 0 ) plugin.data.favorite_count = 0;
}

我把问题缩小到plugin.data.site_index(倒数第二行)返回未定义的问题。如果我用硬编码1替换它,则错误消失。

plugin.data.site_index由以下函数生成,原始问题必须是:

plugin.siteIndex = function(siteid)
{
    for ( var i = 0; i < Favorites.userFavorites.length; i++ ){
        if ( Favorites.userFavorites[i].site_id !== parseInt(siteid) ) continue;
        return i;
    }  
}

不幸的是我不知道这里会出现什么问题。请注意,我正在使用Wordpress Multisite环境(该插件支持)。

您可以看到完整的JS代码here

1 个答案:

答案 0 :(得分:0)

更换

plugin.data.site_favorites = Favorites.userFavorites[plugin.data.site_index].posts;

plugin.data.site_favorites = plugin.data.site_index >= 0 ? 
    Favorites.userFavorites[plugin.data.site_index].posts : '';

你的代码可以正常工作。

我猜是plugin.siteIndex(siteid) return undefined出现问题的情况。