图像滑块的bug

时间:2012-08-09 13:42:03

标签: javascript

我的公司有一个由设计机构创建的网站。他们使用自定义CMS,这使得很难进入网站的原始代码。我一直试图通过我们的图像滑块来捕捉特定的错误。

http://informedfamilies.org/

单击滑块(“1,2,3,4,5”)中的导航按钮时,幻灯片将切换到相应的图像,但仅限第一次。如果再次单击另一个按钮,则滑块不会更改。图像下方的阴影似乎变得更暗,所以我假设图像不会消失,只是在主图像下堆叠。

非常感谢任何解决此问题的帮助。

相关代码:

$('#home_features .listeditem').wrapAll('<div id="fade" />');
$('#fade').css('background', 'transparent');

var featureCt = $('#fade .listeditem').length;
if (featureCt > 1) {
    $('#home_features').each(function() {
        var controlDiv = $('<div />').attr('id', 'switcher');
        for (var i = 1; i <= featureCt; i++) {
            var control = $('<a href="#" class="selector" id="s' + i + '">' + i + '</a>');
            if (i == 1) control.addClass('selected first');
            if (i == featureCt) control.addClass('last');
            controlDiv.append(control);
        }
        $(this).append(controlDiv);
        controlDiv.append('<a href="#" class="selector" id="stop">||</a>');
        controlDiv.append('<a href="#" class="selector" id="start" style="display: none;">&#9654;</a>');
    });
}
$("#fade").innerfade({
    speed: 2000,
    timeout: 5000,
    containerheight: 440,
    tracker: "switcher",
    trackerclass: "selected",
    repeat: 1
});    
$(".selector").click(function() {
    if (this.id == "stop" || this.id == "start") {
        return;
    }

    if($("#fade").data("timer")) {
        clearTimeout($("#fade").data("timer"));
        $("#fade").removeData("timer");
        $("#stop").hide();
        $("#start").show();
    }

    var id = Number(this.id.substr(1));
    $(".selector").removeClass("selected");
    $(this).addClass("selected");

    $("#fade>div:visible").fadeOut(1);
    $("#fade>div.item" + id).fadeIn(1, function() {
        $('body').removeMatchedClasses({ pattern: /^slide/ });
        $('body').addClass('slide' + (id - 1));
    });

    var num = $("#fade").data("num_elements");
    if (id < num) {
        $("#fade").data("next", id);
    } else {
        $("#fade").data("next", 0);
    }
    return false;
});
$("#stop").click(function() {
    clearTimeout($("#fade").data("timer"));
    $("#fade").removeData("timer");
    $("#stop").hide();
    $("#start").show();
    return false;
});
$("#start").click(function() {
    $("#start").hide();
    $("#stop").show();
    $(".selector").removeClass("selected");
    $("#fade").innerfade({
        speed: 2000,
        timeout: 10000,
        containerheight: 440,
        tracker: "switcher",
        trackerclass: "selected"
    });
    var id = $("#fade").data("next");
    $("#s" + id).addClass("selected");
    return false;
});

1 个答案:

答案 0 :(得分:0)

滑块方法在site.js的第37行实例化。在第81行,点击每个选择器时我看到以下错误:

Uncaught TypeError: Object [object Object] has no method 'removeMatchedClasses' 

removeMatchedClasses没有功能声明。它根本不存在。

他们要做的是从/^slide/中删除与正则表达式body匹配的所有类。

我的建议是用以下内容替换第81行:

$('body').removeClass(function(i, c) {
  return c.match(/^slide/).join(" ");
});

让我知道这对你有用。