Javascript - 将匿名函数重写为命名函数

时间:2015-04-19 13:45:34

标签: javascript jquery function

我正在尝试在我的网页上实施this宝丽来图库代码。 在特定网站上,我将宝丽来图库代码置于 a Slide Out Panel内。当宝丽来图库代码放在幻灯片面板中时,我在控制台中一直收到以下错误:

Uncaught TypeError: Cannot read property 'length' of undefined photostack.js:54 
shuffleMArray photostack.js:325 
moveItems photostack.js:390 
Photostack._shuffle photostack.js:263 
Photostack._showPhoto photostack.js:166 
Photostack._open photostack.js:180 
Photostack._initEvents photostack.js:130 
Photostack._init photostack.js:99 
Photostack (index):431 
(anonymous function)

我注意到,当宝丽来图库代码放在外面幻灯片面板时,我不会在控制台中出现此错误。 (一切都按预期工作)

当涉及到JavaScript时,我是一个菜鸟,但我认为调用polaroid-gallery的JS是一个在运行时创建的匿名函数。当宝丽来画廊位于幻灯片面板内时,似乎这个匿名函数没有运行 - 所以我想我不得不将匿名函数重写为命名函数,以便从幻灯片中运行代码面板。 如果我错了,请纠正我!

这是原始代码:(匿名函数)

 new Photostack( document.getElementById( 'photostack-3' ), {
        callback : function( item ) {
            console.log(item)
        }
    } );

这是我的命名功能尝试:(不工作 - 我需要帮助!

function Photostack()
{
    document.getElementById( 'photostack-3' ), {
    callback : function( item ) {
        console.log(item)
    }
}

Photostack();

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您应该在非零大小的容器上使用此Photostack。隐藏display: none的元素大小为零。

执行顺序中photostack code的某些行。

第410行:this.sizes.*设置为offset*,隐藏元素为零 第285行:columns = Math.ceil(this.sizes.inner.height * ...为0 第299行:var grid = []然后没有任何内容添加到数组中因为columns是0 第325行:grid = shuffleMArray(grid);
第54行:inArrLen = marray[0].length,其中marraygrid的本地名称,即[]

([])[0].length(undefined).lengthError!

PS:如果你在dev.tools中使用break on errors功能并在堆栈中走动,你可以自己做这样的研究