Pagination simple en JavaScript

Anika Tabassum Era 12 octobre 2023
  1. Fonction de pagination personnalisée pour paginer les pages Web
  2. Utilisation du plugin Jquery pagination.js pour surfer sur des pages Web
Pagination simple en JavaScript

En JavaScript, nous définissons souvent nos portées de fonction préférées pour extraire certaines activités. La pagination en JavaScript peut être scriptée manuellement avec la combinaison de plusieurs fonctions.

Nous allons vous montrer comment créer une pagination pour surfer de page en page. Nous allons créer des fonctions de pagination de base pour le faire fonctionner, et nous verrons également un autre exemple avec le plugin jquery pagination.js qui facilitera notre expérience de codage.

Fonction de pagination personnalisée pour paginer les pages Web

Nous allons d’abord déclarer l’objet qui contient nos données. L’étape suivante consiste à compter chaque donnée et combien nous souhaitons prévisualiser sur une page. Nous obtiendrons également le nombre total de pages sur notre page Web dans ce processus.

Après que la fonction totNumPages ait calculé notre nombre total de pages, nous allons créer la fonction de base pour appuyer sur prev et next.

Vérifions le bloc de code pour avoir une conception claire.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
<div id="TableList"></div>
<a href="javascript:prevPage()" id="btn_prev">Prev</a>&nbsp;
<a href="javascript:nextPage()" id="btn_next">Next</a><br>
page: <span id="page"></span>
</body>
</html>
var obj = [
  {number: 'Number 1'}, {number: 'Number 2'}, {number: 'Number 3'},
  {number: 'Number 4'}, {number: 'Number 5'}, {number: 'Number 6'},
  {number: 'Number 7'}, {number: 'Number 8'}, {number: 'Number 9'},
  {number: 'Number 10'}, {number: 'Number 11'}, {number: 'Number 12'},
  {number: 'Number 13'}, {number: 'Number 14'}, {number: 'Number 15'}
];
var current_page = 1;
var obj_per_page = 3;
function totNumPages() {
  return Math.ceil(obj.length / obj_per_page);
}

function prevPage() {
  if (current_page > 1) {
    current_page--;
    change(current_page);
  }
}
function nextPage() {
  if (current_page < totNumPages()) {
    current_page++;
    change(current_page);
  }
}
function change(page) {
  var btn_next = document.getElementById('btn_next');
  var btn_prev = document.getElementById('btn_prev');
  var listing_table = document.getElementById('TableList');
  var page_span = document.getElementById('page');
  if (page < 1) page = 1;
  if (page > totNumPages()) page = totNumPages();
  listing_table.innerHTML = '';
  for (var i = (page - 1) * obj_per_page; i < (page * obj_per_page); i++) {
    listing_table.innerHTML += obj[i].number + '<br>';
  }
  page_span.innerHTML = page;
  if (page == 1) {
    btn_prev.style.visibility = 'hidden';
  } else {
    btn_prev.style.visibility = 'visible';
  }
  if (page == totNumPages()) {
    btn_next.style.visibility = 'hidden';
  } else {
    btn_next.style.visibility = 'visible';
  }
}
window.onload = function() {
  change(1);
};

Production :

pagination_personnalisée

Dans ce cas, la fonction change joue un rôle essentiel dans la visualisation de la navigation et des limitations d’objets par page. Aussi, la visibilité des cliquables prev et next sur la première et la dernière page. A chaque chargement de la page et après chaque rechargement, la page par défaut est définie sur page 1.

Utilisation du plugin Jquery pagination.js pour surfer sur des pages Web

Le plugin Jquery a facilité la mise en œuvre de la pagination dans les pages Web. Vous devez ajouter le CDN pour le plugin dans la section header, en important facilement les conventions prédéfinies pour gérer la création de pagination.

Dans l’exemple ci-dessous, nous allons définir un datasource. La datasource peut être initialisée comme un array, object, URL, JSON, et d’autres formats similaires. Les paramètres multiples fonctionnent dans ce plugin. Par exemple, nous pouvons ajouter pageSize:10 pour sélectionner les entrées par page.

Creusons d’abord dans le bloc de code.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>pagination example</title>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/paginationjs/2.1.4/pagination.min.js"></script>

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/paginationjs/2.1.4/pagination.css"/>
</head>
<body>

<div>
    <section>
        <div id="container"></div>
        <div id="pagination"></div>
    </section>
</div>

<script>
    $(function () {
        let container = $('#pagination');
        container.pagination({
            dataSource: [
{number: "Number 1"},
{number: "Number 2"},
{number: "Number 3"},
{number: "Number 4"},
{number: "Number 5"},
{number: "Number 6"},
{number: "Number 7"},
{number: "Number 8"},
{number: "Number 9"},
{number: "Number 10"},
{number: "Number 11"},
{number: "Number 12"},
{number: "Number 13"},
{number: "Number 14"},
{number: "Number 15"},
{number: "Number 16"},
{number: "Number 17"},
            ],
            pageSize: 5,
            callback: function (data, pagination) {
                var dataHtml = '<ul>';

                $.each(data, function (index, item) {
                    dataHtml += '<li>' + item.number + '</li>';
                });

                dataHtml += '</ul>';

                $("#container").html(dataHtml);
            }
        })
    })
</script>
</body>
</html>

Production :

pagination_plugin_jquery

Le code devient plus petit et l’effort de génération de fonctions est moindre. Tout ce qu’il faut, c’est se concentrer sur les mots-clés ou le constructeur définissant les paramètres spécifiés pour changer rapidement la navigation d’une page à l’autre.

Pour une explication plus détaillée et l’utilisation du plugin, consultez la documentation ici.

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook