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/,'id','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 / Exemple :
<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>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.