首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jquery中添加SetInterval函数

在jquery中添加SetInterval函数
EN

Stack Overflow用户
提问于 2017-12-05 16:08:20
回答 0查看 163关注 0票数 0

所以我有下面这段代码:j360

这段代码就是我想要的: html有一个可拖动的360º产品图像视图,但它缺少一个东西:一个自动旋转的按钮。

我已经把按钮放到了html中,但我不能,因为我尝试了更多,我不能创建一个函数或任何东西来使图像自动移动,而且不仅仅是当我将它拖到屏幕上时。

这是我目前掌握的代码。

代码语言:javascript
运行
复制
(function($){
$.fn.j360 = function(options) {
    var defaults = {
        clicked: false,
        currImg: 1
    }
    var options = jQuery.extend(defaults, options);
    return this.each(function() {
        var $obj = jQuery(this);
        var aImages = {};
        $obj.css({
            'margin-left' : 'auto',
            'margin-right' : 'auto',
            'text-align' : 'center',
            'overflow' : 'hide'
        });
        $overlay = $obj.clone(true);
        $overlay.html('<img src="images/loader.gif" class="loader" style="margin-top:' + ($obj.height()/2 - 15) + 'px" />');
        $overlay.attr('id', 'view_overlay');
        $overlay.css({
            'position' : 'absolute',
            'z-index': '5',
            'top' : $obj.offset().top,
            'left' : $obj.offset().left,
            'background' : '#fff'
        });
        $obj.after($overlay);
        $obj.after('<div id="colors_ctrls"></div>');
        jQuery('#colors_ctrls').css({
            'width' : $obj.width(),
            'position' : 'absolute',
            'z-index': '5',
            'top' : $obj.offset().top + $obj.height - 50,
            'left' : $obj.offset().left
        });
        var imageTotal = 0;
        jQuery('img', $obj).each(function() {
            aImages[++imageTotal] = jQuery(this).attr('src');
            preload(jQuery(this).attr('src'));
        })
        var imageCount = 0;
        jQuery('.preload_img').load(function() {
            if (++imageCount == imageTotal) {
                $overlay.animate({
                    'filter' : 'alpha(Opacity=0)',
                    'opacity' : 0
                }, 100);
                $obj.html('<img src="' + aImages[1] + '" />');
                $overlay.bind('mousedown touchstart', function(e) {
                    if (e.type == "touchstart") {
                        options.currPos = window.event.touches[0].pageX;
                    } else {
                        options.currPos = e.pageX;
                    }
                    options.clicked = true;
                    return false;
                });
                jQuery(document).bind('mouseup touchend', function() {
                    options.clicked = false;
                });
                jQuery(document).bind('mousemove touchmove', function(e) {
                    if (options.clicked) {
                        var pageX;
                        if (e.type == "touchmove") {
                            pageX = window.event.targetTouches[0].pageX;
                        } else {
                            pageX = e.pageX;
                        }
                        var width_step = 50;
                        if (Math.abs(options.currPos - pageX) >= width_step) {
                            if (options.currPos - pageX >= width_step) {
                                options.currImg++;
                                if (options.currImg > imageTotal) {
                                    options.currImg = 1;
                                }
                            } else {
                                options.currImg--;
                                if (options.currImg < 1) {
                                    options.currImg = imageTotal;
                                }
                            }
                            options.currPos = pageX;
                            $obj.html('<img src="' + aImages[options.currImg] + '" />');
                        }
                    }
                });
            }
        });
        if (jQuery.browser.msie || jQuery.browser.mozilla || jQuery.browser.opera || jQuery.browser.safari ) {
            jQuery(window).resize(function() {
                onresizeFunc($obj, $overlay);
            });
        } else {
            var supportsOrientationChange = "onorientationchange" in window,
            orientationEvent = supportsOrientationChange ? "orientationchange" : "resize";
            window.addEventListener(orientationEvent, function() {
                onresizeFunc($obj, $overlay);
            }, false);
        }
        onresizeFunc($obj, $overlay)
    });
}
})
(jQuery)


function onresizeFunc($obj, $overlay){

$obj.css({
    'margin-top' : $(document).height()/2
});
$overlay.css({
    'margin-top' : 200,
    'top' : $obj.offset().top,
    'left' : $obj.offset().left
});

jQuery('#colors_ctrls').css({
    'top' : $obj.offset().top + $obj.height - 50,
    'left' : $obj.offset().left
})
}

function preload(image) {

if (typeof document.body == "undefined") return;
try {
    var div = document.createElement("div");
    var s = div.style;
    s.position = "absolute";
    s.top = s.left = 0;
    s.visibility = "hidden";
    document.body.appendChild(div);
    div.innerHTML = "<img class=\"preload_img\" src=\"" + image + "\" />";
} 
catch(e) {
// Error. Do nothing.
}
};   

我需要一种方法来随时间递增一个函数,使ilusion的自动旋转。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47648798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档