我正在尝试将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();
});
答案 0 :(得分:0)
突出的一点是使用匹配正则表达式的匹配并导致您描述的行为。这应该改变平等。
return this.id.match('profs' + $.vars.counter);
应该是
return this.id == 'profs' + $.vars.counter;
也可能有其他事情。
答案 1 :(得分:0)
不确定这是否会解决您的问题,但有一些事情对我来说有点怀疑:
$.vars.counter == 1
或$.vars.counter < 0
。如果$.vars.counter == 0
?编辑:
另外,你的上一个/下一个逻辑有点奇怪(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;
}