我正在尝试在我的网页上实施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();
提前谢谢!
答案 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
,其中marray
是grid
的本地名称,即[]
。
([])[0].length
→(undefined).length
→Error!
PS:如果你在dev.tools中使用break on errors
功能并在堆栈中走动,你可以自己做这样的研究。