-3

我试图弄清楚如何确定在列表底部显示哪些页面链接。假设我有 90 页的结果。如果可能的话,我希望始终有一个指向第 1 页和第 90 页的链接,然后是当前页面的左右 3-4 页。

[] - 表示当前页面

第 1 页: [1] 2 3 4 5 6 7 8 9 ... 90

第 2 页:1 [2] 3 4 5 6 7 8 9 ... 90

第 20 页:1 ... 17 18 19 [20] 21 22 23 ... 90

我很难弄清楚逻辑。因此,输入:total_number of pages 和 current page,生成要显示的页面列表。我正在使用 perl,但另一种语言的示例也可以。

4

1 回答 1

0

像这样的东西应该适合你。

use strict;
use warnings;

use feature 'say';

use constant MARGIN => 3;

say join ', ', page_numbers(2, 90);
say join ', ', page_numbers(30, 90);
say join ', ', page_numbers(88, 90);

sub page_numbers {

  my ($this, $total) = @_;

  my $min = $this <= MARGIN + 1 ? 2 : $this - MARGIN;
  my $max = $this >= $total - (MARGIN + 1) ? $total - 1 : $this + MARGIN;

  return 1, $min..$max, $total;
}

输出

1, 2, 3, 4, 5, 90
1, 27, 28, 29, 30, 31, 32, 33, 90
1, 85, 86, 87, 88, 89, 90
于 2012-12-06T04:49:14.597 回答