From 9dc314f1eb4bf38785b9bc99f84fb7ea50b5ddb7 Mon Sep 17 00:00:00 2001 From: Sebastien Date: Thu, 6 Jan 2022 10:00:52 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20des=20m=C3=A9thodes=20items,=20itemsAtI?= =?UTF-8?q?ndex=20et=20count?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gsdom.js | 66 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 58 insertions(+), 8 deletions(-) diff --git a/src/gsdom.js b/src/gsdom.js index 95d4b31..4695c72 100644 --- a/src/gsdom.js +++ b/src/gsdom.js @@ -6,7 +6,7 @@ window.$_ = (() => { * @class GSDom * * @example - * // Ajout d'une classe `my_class` à tous lel `a` + * // Ajout d'une classe `my_class` à tous les `a` * $_("a").addClass("my_class"); * @example * // Ajout d'une classe `my_class` à tous les `a` enfants de `div#main` @@ -25,8 +25,8 @@ window.$_ = (() => { */ class GSDom { constructor(selector, scope) { - this.shortversion = '2.0.0'; - this.longversion = 'GSDom 2.0.0 by Séb'; + this.shortversion = '2.1.0'; + this.longversion = `GSDom ${this.shortversion} by Séb`; if (!selector) { // On ne va pas plus loin s'il n'y a pas de sélecteur return; @@ -86,7 +86,7 @@ window.$_ = (() => { /** * Fonction de rappel la méthode each() * @callback eachCallback - * @see {@link #each} + * @see {@link #each|each} * @param {HTMLElement} element L'élément du DOM concerné * @param {number} index L'index de l'élément */ @@ -346,8 +346,8 @@ window.$_ = (() => { /** * Fonction de rappel des méthodes on() et onClick() * @callback evtCallback - * @see {@link #on} - * @see {@link #onclick} + * @see {@link #on|on} + * @see {@link #onclick|onClick} * @param {Event} evt L'événement qui s'est produit * @param {HTMLElement} item L'élément du DOM concerné par lévénement */ @@ -367,7 +367,9 @@ window.$_ = (() => { * Retourne le premier élément trouvé * * @example - * let htmlElement = $_("p.paragraphe").first(); + * let htmlElement = $_("p.paragraphe").first(true); + * @example + * $_("input.my_class").first().setDisabled(); * * @param {Boolean} [isHTMLElement=false] `true` pour obtenir un élément du DOM, `false` pour un Objet GSDom * @returns {HTMLElement} l'élément du DOM trouvé @@ -379,7 +381,9 @@ window.$_ = (() => { * Retourne le dernier élément trouvé * * @example - * let htmlElement = $_("p.paragraphe").last(); + * let htmlElement = $_("p.paragraphe").last(true); + * @example + * $_("input.my_class").last().setDisabled(); * * @param {Boolean} [isHTMLElement=false] `true` pour obtenir un élément du DOM, `false` pour un Objet GSDom * @returns {(GSDom|HTMLElement)} L'élément du DOM trouvé ou un Objet GSDom correspondant pour chainage @@ -387,6 +391,52 @@ window.$_ = (() => { last(isHTMLElement) { return this.found() ? (isHTMLElement === true ? this.elems[this.elems.length - 1] : new GSDom(this.elems[this.elems.length - 1])) : false; } + /** + * Retourne un tableau des éléments du Dom sélectionnés + * + * @example + * let my_HTMLElements = $_("p.my_class").items(); + * + * @returns {HTMLElement[]} les éléments du DOM sélectionnés + */ + items() { + return this.elems; + } + /** + * Retourne le nombre d'éléments du DOM sélectionnés + * + * @example + * let count = $_("p.my_class").count(); + * + * @returns + */ + count() { + return this.elems.length; + } + /** + * Retourne l'élément à l'index `index` parmi les éléments sélectionnés; + * + * @example + * let htmlElement = $_("p.paragraphe").itemAtIndex(2,true); + * @example + * $_("input.my_class").itemAtIndex(2).setDisabled(); + * + * @param {Number} index Index de l'élément souhaité + * @param {Boolean} [isHTMLElement=false] `true` pour obtenir un élément du DOM, `false` pour un Objet GSDom + * @returns {(GSDom|HTMLElement)} L'élément du DOM trouvé ou un Objet GSDom correspondant pour chainage + */ + itemAtIndex(index, isHTMLElement) { + let i = parseInt(index); + if (i >= this.count() || i < 0) + return false; + return isHTMLElement === true ? this.elems[i] : new GSDom(this.elems[i]); + } + /** + * Retourne la version de la bibliothèque + * + * @param {Boolean} long `true` pour obtenir la version longue + * @returns {String} Le numéro de version + */ version(long) { return long === true ? this.longversion : this.shortversion; }