begin process at 2012 05 28 10:29:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GETELEMENTSBYREG

GETELEMENTSBYREG


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :sélécteur, expression, régulière Niveau :Débutant Date de création :28/07/2009 Vu / téléchargé :2 135 / 70

Auteur : Kimjoa

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

suite à un débat sur un autre site, je vous propose un sélécteur d'élément HTML, basé sur des expréssions régulière.
La fonction est très simple d'utilisation.

document.getElementsByReg(/rub/,'i d','li');
1er argument, le sélécteur css,
2eme, le nom de l'attribut à tester,
enfin en option le nom du tag , le type de l'élément

merci à SpaceFrog, qui vous reconnaitrais , j'en suis sur !!
bye

Source

  • <script type="text/javascript">
  • document.getElementsByReg=function(){
  • //constante et méthode privé
  • //groupe ed prop spécifique pas accessible via getattribute et syntaxe particuliere,...si ie
  • var camelGroupe = ['colSpan', 'rowSpan', 'vAlign', 'dateTime', 'accessKey', 'tabIndex', 'encType', 'maxLength', 'readOnly', 'longDesc', 'cellPadding', 'cellSpacing', 'frameBorder', 'useMap'],
  • isIE = /msie/i.test(navigator.userAgent);
  • //contruit un objet d'acces rapide au propriété spécifique
  • for(var i = 0, c, isCamel = {'class' : 'className', 'className' : 'className', id : 'id'}; c = camelGroupe[i]; i++)
  • isCamel[c.toLowerCase()] = c;
  • //récupere la valeur via getAttribute
  • function _get(el, attr){
  • return el.getAttribute(attr)
  • }
  • //récupere la valeur via propriété du noeud (tjrs accessible avec ie)
  • function _getCamel(el, attr){
  • return el[attr]
  • }
  • //rourne la fonction publique
  • return function(reg, attr, tag){
  • var tab=[];
  • if(!(reg instanceof RegExp))
  • return tab;
  • //définit la fonction a utilser pour récupérer l'attribut, redéfinit l'attribut si spécifique
  • var camel,
  • get = (camel = isCamel[attr]) || isIE ? _getCamel : _get;
  • attr = camel || attr;
  • for(var i=-1, els = document.body.getElementsByTagName(tag || '*'), el; el = els[++i];){
  • if(reg.test(get(el,attr)))
  • tab[tab.length] = el;//plus rapide qu'un push
  • }
  • return tab;
  • }
  • }();
  • </script>
  • <title>Nouvelle page 1</title>
  • </head>
  • <body onload="alert(document.getElementsByReg(/rub/,'id','li').length);alert(document.getElementsByReg(/^blo/,'class','li').length);" />
  • <ul>
  • <li class='blabla' id="rub1" >rubrique1</li>
  • <li class='bloblo' id="menu1" >menu1</li>
  • <li class='blabla' id="menu2" >menu2</li>
  • <li class='bloblo' id="rub2" >rubrique2</li>
  • <li class='blabla' id="menu3" >menu3</li>
  • <li class='bloblo' id="menu4" >menu4</li>
  • <li class='blabla' id="rub3" >rubrique1</li>
  • <li class='bloblo' id="menu5">menu5</li>
  • </ul>
  • </div>
  • </body>
  • </html>
 
 
<script type="text/javascript">
document.getElementsByReg=function(){
    //constante et méthode privé
    //groupe ed prop spécifique pas accessible via getattribute et syntaxe particuliere,...si ie
    var camelGroupe = ['colSpan', 'rowSpan', 'vAlign', 'dateTime', 'accessKey', 'tabIndex', 'encType', 'maxLength', 'readOnly', 'longDesc', 'cellPadding', 'cellSpacing', 'frameBorder', 'useMap'],
        isIE = /msie/i.test(navigator.userAgent);
    //contruit un objet d'acces rapide au propriété spécifique     
    for(var i = 0, c, isCamel = {'class' : 'className', 'className' : 'className', id : 'id'}; c = camelGroupe[i]; i++)
        isCamel[c.toLowerCase()] = c;
    //récupere la valeur via getAttribute    
    function _get(el, attr){
        return el.getAttribute(attr)
    }
    //récupere la valeur via propriété du noeud (tjrs accessible avec ie)
    function _getCamel(el, attr){
        return el[attr]
    }     
    //rourne la fonction publique    
    return function(reg, attr, tag){
        var tab=[];
        if(!(reg instanceof RegExp))
            return	tab;
        //définit la fonction a utilser pour récupérer l'attribut, redéfinit l'attribut si spécifique
        var camel, 
            get = (camel = isCamel[attr]) || isIE ? _getCamel : _get;
        attr = camel || attr; 
        for(var i=-1, els = document.body.getElementsByTagName(tag || '*'), el; el = els[++i];){
            if(reg.test(get(el,attr)))
	            tab[tab.length] = el;//plus rapide qu'un push
        }
        return tab;  
    }
}();
</script>
 
 
 
<title>Nouvelle page 1</title>
</head>
 
<body onload="alert(document.getElementsByReg(/rub/,'id','li').length);alert(document.getElementsByReg(/^blo/,'class','li').length);" />
<ul>
	<li class='blabla' id="rub1" >rubrique1</li>
	<li  class='bloblo' id="menu1" >menu1</li>
	<li  class='blabla' id="menu2" >menu2</li>
	<li class='bloblo' id="rub2" >rubrique2</li>
	<li  class='blabla' id="menu3" >menu3</li>
	<li class='bloblo' id="menu4" >menu4</li>
	<li  class='blabla' id="rub3" >rubrique1</li>
	<li class='bloblo' id="menu5">menu5</li>
</ul>			
</div>
</body>
</html>
 


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip SYSTÈME DE REQUÊTE SUR DES DONNÉES JSON
Source avec Zip Source avec une capture MENU ANIMER HORIZONTALE OU VERTICAL , ACCÈSSIBLE SANS JS (SA...
Source avec Zip MARQUEE VERSION2 COMPATIBLE MOOTOOLS, JQUERY, PROTOTYPE ET S...
Source avec Zip Source avec une capture UID - FRAMEWORK JAVASCRIPT
Source avec Zip DOMBUILDER

 Sources de la même categorie

Source avec Zip Source avec une capture SLIDESHOW IMAGES ET TEXTES EN PUR JAVASCRIPT par ansuzpeorth
Source avec Zip INPUT TEXT AUTOMATIQUE CREATION SUPPRESSION par lycanges
Source avec Zip Source avec une capture TABLE_SV : TABLEAU DYNAMIQUE, MONTRER/CACHER COLONNE SUR DEM... par synanceia
COLONNES ADAPTABLES EN HAUTEUR par dronoide
Source avec Zip VECTEURS ET MATRICES: OUTILS GRAPHIQUES UTILES par william voirol

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture QUERYSELECTORALL, SELECTEUR CSS3 par Kimjoa
FIXER LES DIMENSIONS MINIMUM D'UNE DIV (FONCTIONNE POUR LE M... par x_mec
REG EXP TESTEUR par coucou747

Commentaires et avis

Commentaire de MangaII le 03/08/2009 08:51:56

Intéressant ...

Même si pour l'instant, on a réussi à faire sans, ça pourrai servir ...

Tite question : Pourquoi Camel ????

Commentaire de LeFauve42 le 03/08/2009 10:47:48

Ton codage n'est pas mal, mais ca fait un peu redondant avec les css selector v3, non ?
(et c'est sans doute beaucoup plus lent).

Plutot que de retourner un tableau vide quand le filtre n'est pas une regex, ne pourrais tu pas le considerer comme un exact match ?

Eric

Commentaire de Kimjoa le 04/08/2009 22:55:27

pk camel? on peux s'apercevoir que les attribut accessible seulement en propriété DOM sont de type camel case.
(camel case = majuscule de la première lettre d'un mot d'une propriété )

concernant la redondance avec les css3 , c 'est vrai mais pour des petits site , ça peux etre utile ... vais essayé de l'intégrer à mon sélecteur, vais y intégrer aussi un match , ainsi qu'une sélection des parents.

Sinon tu as tout a fait raison quand le filtre n'est pas une regex, vais adopter ça ..

merci, bye !!

Commentaire de jdmcreator le 23/09/2009 14:15:02

Bon travail mais selon moi, tu devrais remplacement :

        isIE = /msie/i.test(navigator.userAgent);

par

        isIE =false;
        if(document.all)
        {isIE=true;}

car il est possible pour plusieurs navigateurs de modifier le userAgent ;)

JDMCreator

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

expression régulière AU SECOURS ! [ par jeanette_bella ] Bonjour à tous,Je cherche à faire un ptit script qui me permettrait de récupérer d'un champ de texte que des caractères alphanumériques. Ex : A0FF25Li Controle des dates [ par ov3rdoze ] Salut Je débute et j'ai voulu faire une fonction qui vérifie à la volée la date saisie dans un input. Pour l'instant je n'ai pas traité les années bis Expression régulière [ par DaKeD ] Bonjour &#224; tous j'ai besoin d'aide en tant que d&#233;butant en javascript. Je cherche &#224; tester si un champ texte contient bien un nombre, Expression régulière impossible ? [ par Mindiell ] Bonjour, Je cherche actuellement à remplacer certains mots dans un texte en utilisant les expressions régulières. Par exemple : toto est le plus beau Expression régulière [ par sylvebarbe ] bonjour,N'ayant aucune connaissance sur ce sujet, je suis à la recherche d'une expression régulière qui permet d'interdire l'entrée dans un chmap de f Expression régulière : Remplacer un texte par un autre mais en évitant les liens hypertextes [ par kiwithereturn ] Bonjour,Je sollicite votre aide sur un problème d'expression régulière que je ne maitrise pas du tout.Mon objectif : Filtrer sur un forum, avec Javasc Expression régulière [ par Kirvin ] Bonjours à tous,j'utilise les expressions régulière pour cleaner un contenu copié depuis Word (enlever tout le code HTML inutil généré par Word)J'util Expression régulière - Vérifier si un nombre est supérieur à une valeur [ par prim ] Bonjour, Est-ce que quelqu'un connaît une expression régulière pour tester si un nombre est supérieur à 30 par exemple. J'ai fouiller un peu mais j' Problème avec une expression régulière [ par Dadoo ] Bonjour et merci de bien vouloir jeter un oeil sur le sujet. Je désire utiliser une expression régulière pour trouver un caractère (le ²) dans une cha


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,554 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales