1

我在 jQuery Elastislide 中有一个画廊。

图库的每张图片都有一个对应的Hash。

例如:*www.example.com/gallery.html#4/title_of_the_picture*

所以,当我重新加载第四张图片时,页面会加载第四张图片。

但是当我重新加载没有哈希中标题之前的数字时,图片不会加载。

*www.example.com/gallery.html#title_of_the_picture*

我可以删除这个号码吗?如果可以的话,Jquery 中正确的代码是什么?

jQuery代码:

Gallery = (function() {
    // index of the current item        
    var imageIndex = 0;
    if (window.location.hash) {
        var imageIndexStr = window.location.hash.replace('#', ''); // remove #
        imageIndex = parseInt(imageIndexStr, 0); // convert to int
    }

    var current = imageIndex;
    // mode : carousel || fullview
    mode = 'carousel',
    // control if one image is being loaded
    anim = false, init = function() {
        // (not necessary) preloading the images here...
        $items.add('<img src="ajax-loader.gif"/><img src="black.png"/>').imagesLoaded(function() {
            // add options
            _addViewModes();
            // add large image wrapper
            _addImageWrapper();
            // show first image
            _showImage($items.eq(current));
        });
    }
}​
4

1 回答 1

2

代码行:

var imageIndexStr = window.location.hash.replace('#', '');
imageIndex = parseInt(imageIndexStr, 0); // convert to int

将尝试将散列的第一个 char 转换为 int,但如果第一个 char 不是有效的 int(就像你说的那样,如果你删除了 4 就是这种情况),那么 JavaScript 将在那一点,不要再进一步了。

parseInt()此外,根据文档,- 0 似乎不是一个有效的选项。

编辑:替换到 W3Schools 的链接

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt

于 2012-08-28T12:28:30.093 回答