从数据库填充的Javascript prev / next按钮

时间:2011-02-25 19:08:02

标签: javascript

我正在尝试将javascript用于循环查看数据库中教授列表的下一个和上一个按钮。除了一个奇怪的故障之外,我的代码是有效的:当有超过9位教授时(本例中将有11位教授),点击Prof2上的“previou”按钮显示Prof1,Prof10和& Prof11同时。

同样地,点击最后一个教授的“next”,如本例中的Prof11,显示Prof1,Prof10和& Prof11同时。你能发现错误吗?有没有更简单的方法来创建这些按钮?提前谢谢。

$.vars = {
counter : 2,
limit : $getUnitFacultyPages.TotalItems,

};

function nextItem() {
$('li','#profs')
.fadeOut('slow')
.filter( function() { return this.id.match('profs' + $.vars.counter); })
.fadeIn('slow');
$.vars.counter == $.vars.limit? $.vars.counter = 1 : $.vars.counter++; 
}

function prevItem() {
$.vars.counter -= 2;

if($.vars.counter == 1){ 
    $.vars.counter = $.vars.limit;
} else if ($.vars.counter < 0){
    $.vars.counter = $.vars.limit -1;
}

nextItem();
}

$("#profs-next").click(function () {
nextItem();
});

$("#profs-prev").click(function () {
prevItem();
});

2 个答案:

答案 0 :(得分:0)

突出的一点是使用匹配正则表达式的匹配并导致您描述的行为。这应该改变平等。

return this.id.match('profs' + $.vars.counter);

应该是

return this.id == 'profs' + $.vars.counter;

也可能有其他事情。

答案 1 :(得分:0)

不确定这是否会解决您的问题,但有一些事情对我来说有点怀疑:

  1. 为什么减少2?
  2. 您正在检查$.vars.counter == 1$.vars.counter < 0。如果$.vars.counter == 0
  3. 会发生什么

    编辑:

    另外,你的上一个/下一个逻辑有点奇怪(imo)。忽略您的显示逻辑,我可能会将其更改为:

    $.vars = {
    idx: 0,
    limit: 5,
    };
    
    function nextItem()
    {
        $.vars.idx = $.vars.idx >= $.vars.limit ? 0 : ++$.vars.idx;
    }
    
    function prevItem()
    {
        $.vars.idx = $.vars.idx <= 0 ? $.vars.limit : --$.vars.idx;
    }