日期:2014-05-16  浏览次数:20411 次

一个滚动循环图片的脚本问题
此脚本兼容IE6,IE9,火狐,谷歌,不支持IE7,IE8.。求大神指点到底哪里出了问题
JS
JScript code

/**
*glide.layerGlide((oEventCont,oSlider,sSingleSize,sec,fSpeed,point);
*@param auto type:bolean 是否自动滑动 当值是true的时候 为自动滑动
*@param oEventCont type:object 包含事件点击对象的容器
*@param oSlider type:object 滑动对象
*@param sSingleSize type:number 滑动对象里单个元素的尺寸(width或者height)  尺寸是有point 决定
*@param second type:number 自动滑动的延迟时间  单位/秒
*@param fSpeed type:float   速率 取值在0.05--1之间 当取值是1时  没有滑动效果
*@param point type:string   left or top
*/
var glide = new function () {
    function $id(id) { return document.getElementById(id); };
    this.layerGlide = function (auto, oEventCont, oSlider, sSingleSize, second, fSpeed, point) {
        var oSubLi = $id(oEventCont).getElementsByTagName('li');
        var interval, timeout, oslideRange;
        var time = 1;
        var speed = fSpeed
        var sum = oSubLi.length;
        var a = 0;
        var delay = second * 1000;
        var setValLeft = function (s) {
            return function () {
                oslideRange = Math.abs(parseInt($id(oSlider).style[point]));
                $id(oSlider).style[point] = -Math.floor(oslideRange + (parseInt(s * sSingleSize) - oslideRange) * speed) + 'px';
                if (oslideRange == [(sSingleSize * s)]) {
                    clearInterval(interval);
                    a = s;
                }
            }
        };
        var setValRight = function (s) {
            return function () {
                oslideRange = Math.abs(parseInt($id(oSlider).style[point]));
                $id(oSlider).style[point] = -Math.ceil(oslideRange + (parseInt(s * sSingleSize) - oslideRange) * speed) + 'px';
                if (oslideRange == [(sSingleSize * s)]) {
                    clearInterval(interval);
                    a = s;
                }
            }
        }

        function autoGlide() {
            for (var c = 0; c < sum; c++) { oSubLi[c].className = ''; };
            clearTimeout(interval);
            if (a == (parseInt(sum) - 1)) {
                for (var c = 0; c < sum; c++) { oSubLi[c].className = ''; };
                a = 0;
                oSubLi[a].className = "active";
                interval = setInterval(setValLeft(a), time);
                timeout = setTimeout(autoGlide, delay);
            } else {
                a++;
                oSubLi[a].className = "active";
                interval = setInterval(setValRight(a), time);
                timeout = setTimeout(autoGlide, delay);
            }
        }

        if (auto) { timeout = setTimeout(autoGlide, delay); };
        for (var i = 0; i < sum; i++) {
            oSubLi[i].onmouseover = (function (i) {
                return function () {
                    for (var c = 0; c < sum; c++) { oSubLi[c].className = ''; };
                    clearTimeout(timeout);
                    clearInterval(interval);
                    oSubLi[i].className = "active";
                    if (Math.abs(parseInt($id(oSlider).style[point])) > [(sSingleSize * i)]) {
                        interval = setInterval(setValLeft(i), time);
                        this.onmouseout = function () { if (auto) { timeout = setTimeout(autoGlide, delay); }; };
                    } else if (Math.abs(parseInt($id(oSlider).style[point])) < [(sSingleSize * i)]) {
                        interval = setInterval(setValRight(i), time);
                        this.onmouseout = function () { if (auto) { timeout = setTimeout(autoGlide, delay); }; };
                    }
                }
            })(i)
        }
    }
}
glide.layerGlide(true, 'icon_num_top', 'show_pic_top', 237, 2, 0.1, 'top');


css
CSS code

#