Js nom variable fin inconnue
Fermé
necro27
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
-
Modifié par necro27 le 10/02/2011 à 14:50
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 - 11 févr. 2011 à 19:02
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 - 11 févr. 2011 à 19:02
A voir également:
- Js nom variable fin inconnue
- Trouver un numéro de portable avec un nom ✓ - Forum Mobile
- Trouver une adresse avec un nom de famille gratuit ✓ - Forum Mobile
- Téléchargez cette image pour trouver le nom du fichier. il correspond au nom de cette loutre. comment s'appelle-t-elle ? - Forum Windows
- Nom sonnerie iphone - Forum iPhone
6 réponses
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
10 févr. 2011 à 21:46
10 févr. 2011 à 21:46
Tes contrôles sont de quel type ?
Tu peux tenter un truc dans ce goût-là :
À répéter, le cas échéant, pour les <textarea> et <select> ;)
Tu peux tenter un truc dans ce goût-là :
var list = tonFormulaire.getElementsByTagName('input'); for (var i = 0; i < list.length; i++) { var control = list[i]; if (control.id && control.id.indexOf('nomvariable') > -1) { control.disabled = true; } }
À répéter, le cas échéant, pour les <textarea> et <select> ;)
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
10 févr. 2011 à 15:27
10 févr. 2011 à 15:27
Salut,
il n'y a rien en JS qui permet de faire une sélection « avec joker ». Il faudrait que tu t'appuies sur ce que tu sais de la page pour récupérer une liste de contôles la plus petite possible. Ensuite tu pourras parcourir cette liste et regarder les id de chaque contrôle, et utiliser indexOf ou substring dans un bloc if.
il n'y a rien en JS qui permet de faire une sélection « avec joker ». Il faudrait que tu t'appuies sur ce que tu sais de la page pour récupérer une liste de contôles la plus petite possible. Ensuite tu pourras parcourir cette liste et regarder les id de chaque contrôle, et utiliser indexOf ou substring dans un bloc if.
necro27
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
Modifié par necro27 le 10/02/2011 à 15:37
Modifié par necro27 le 10/02/2011 à 15:37
hummm comment dire....flûte !
bonjour Groarh,
Tout d'abord merci pour la réponse, ensuite...j'aime pas la réponse ^^' enfin la pas la valeur de la réponse, mais le coté mauvaise nouvelle.
Le souci est que mes noms sont très dynamiques, et je ne peux rester sur quelque chose de fixe. Et donc la restriction au sens où je la comprend est impossible.
je me penche sur l'indexof, et substring que j'avoue ne connaitre que de vue.
Merci.
Necro27
bonjour Groarh,
Tout d'abord merci pour la réponse, ensuite...j'aime pas la réponse ^^' enfin la pas la valeur de la réponse, mais le coté mauvaise nouvelle.
Le souci est que mes noms sont très dynamiques, et je ne peux rester sur quelque chose de fixe. Et donc la restriction au sens où je la comprend est impossible.
je me penche sur l'indexof, et substring que j'avoue ne connaitre que de vue.
Merci.
Necro27
necro27
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
11 févr. 2011 à 09:11
11 févr. 2011 à 09:11
Bonjour, bonjour :)
C'est bon j'ai trouvé réponse à mon problème. En fait j'avais posté ma question sur un second forum et il s'avère que sur ce dernier une réponse avait déjà plus ou moins été formulée auparavant. Donc une fois ma question posé, on m'a dirigé sur ce code.
Mais cela se rapproche grandement avec ce que tu proposes.
Je met ci-dessous le code qu'il m'a été transmis, que j'ai retravaillé par la suite.
Très bonne journée à toi, sincèrement, et merci d'avoir répondu présent à mon problème.
Necro27
C'est bon j'ai trouvé réponse à mon problème. En fait j'avais posté ma question sur un second forum et il s'avère que sur ce dernier une réponse avait déjà plus ou moins été formulée auparavant. Donc une fois ma question posé, on m'a dirigé sur ce code.
Mais cela se rapproche grandement avec ce que tu proposes.
Je met ci-dessous le code qu'il m'a été transmis, que j'ai retravaillé par la suite.
<script type="text/javascript"> document.getElementsByReg=function(reg,attr){ var tabReg=new Array(); var tabElts=document.body.getElementsByTagName('*'); var TEL=tabElts.length; if(! (reg instanceof RegExp)){return tabReg;} i=0; while(tabElts[i]){ if(tabElts[i][attr]){ if(reg.test(tabElts[i][attr])){tabReg.push(tabElts[i]);} } i++; } return tabReg; } function foo(){ var tabdiv=document.getElementsByReg(/^mondiv/,'id'); var liste=""; var i=-1; while(tabdiv[++i]){ liste+="le div "+tabdiv[i].id+" contient =>"+tabdiv[i].innerHTML +"\n"; } alert(liste); } </script> </head> <body onload="foo()"> <div id="_3"> <div id="mondiv1">truc contenu dans mondiv 1 </div> <div id="mondiv2">truc contenu dans mondiv 2</div> <div id="madiv3">truc contenu dans ma div3</div> <div id="madiva">truc contenu dans madiva</div> <div id="mandiv5">truc contenu dans mandiv5</div> <div id="mondivb">truc contenu dans mondivb</div> </div> </body>
Très bonne journée à toi, sincèrement, et merci d'avoir répondu présent à mon problème.
Necro27
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
11 févr. 2011 à 13:58
11 févr. 2011 à 13:58
Waow, faut être le fils à personne pour conseiller à quelqu'un d'utiliser getElementsByTagName('*'). Ça récupère tous les éléments de la page... Moins optimisé, tu meurs !
necro27
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
11 févr. 2011 à 15:20
11 févr. 2011 à 15:20
Oui tous les éléments de la page commençant par la valeur de reg dans la fonction document.getElementsByReg=function(reg,attr).
Donc ici je ne récupère que les id des contrôles commençant par la valeur que je donne (pour attr = 'id')
Donc en gros
document.getElementsByReg(/^mondiv/,'id');
Pour récupérer la liste de tous les contrôles dont l'id commence par mondiv
Bon après je ne sais pas trop, je n'ai pas créé moi même la fonction, mais je pense que l'optimisation est mieux que nulle puisqu'il me semble que cette fonction tri les éléments qu'elle récupère..non ?
Après je suis trop novice sur le coté optimisation, donc je suppose tu dois sûrement avoir raison ^^"
Mais bon ça fonctionne et mon application reste une application en local, (intranet) donc pas les soucis d'internet....
Bonne journée ;)
ps : pour info l'auteur de cette fonction, où du moins celui qui me l'a proposé, est SpaceFrog du forum Developpez.com
Peut être connu, peut être pas...
Pour info la discussion sur laquelle il m'a redirigé
https://www.developpez.net/forums/d759796/webmasters-developpement-web/general-conception-web/contribuez/src-getelement-s-byid-filtre-regexp/
Voilà, bonne journée ^^
Necro27
Donc ici je ne récupère que les id des contrôles commençant par la valeur que je donne (pour attr = 'id')
Donc en gros
document.getElementsByReg(/^mondiv/,'id');
Pour récupérer la liste de tous les contrôles dont l'id commence par mondiv
Bon après je ne sais pas trop, je n'ai pas créé moi même la fonction, mais je pense que l'optimisation est mieux que nulle puisqu'il me semble que cette fonction tri les éléments qu'elle récupère..non ?
Après je suis trop novice sur le coté optimisation, donc je suppose tu dois sûrement avoir raison ^^"
Mais bon ça fonctionne et mon application reste une application en local, (intranet) donc pas les soucis d'internet....
Bonne journée ;)
ps : pour info l'auteur de cette fonction, où du moins celui qui me l'a proposé, est SpaceFrog du forum Developpez.com
Peut être connu, peut être pas...
Pour info la discussion sur laquelle il m'a redirigé
https://www.developpez.net/forums/d759796/webmasters-developpement-web/general-conception-web/contribuez/src-getelement-s-byid-filtre-regexp/
Voilà, bonne journée ^^
Necro27
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
11 févr. 2011 à 19:02
11 févr. 2011 à 19:02
Yep, tu n'as juste pas suivi la discussion jusqu'au bout (elle s'étale sur plus d'un mois !). Les membres de developpez.com ont généralement à coeur d'optimiser leurs scripts, et des versions plus efficaces du script que tu as trouvé ont été proposées après...
Pour info il est vivement recommandé d'utiliser la fonction de sélectione la plus adaptée possible, parmi toutes celles proposées par les navigateurs :
- getElementById
- getElementsByTagName (sous IE6, ne marche que sur <body>)
- getElementsByName (obsolète)
- getElementsByClassName (récente donc pas implémentée partout)
- etc.
Il faut faire confiance aux routines proposées par les navigateurs, qui sont susceptibles d'optimiser toujours plus leurs algorithmes internes. Si on utilise correctement ces fonctions, notre script s'améliore tout seul à mesure que les navigateurs évoluent.
Dans le cas présent, la fonction getElementsByTagName est appellée sur body (à peu de chose près, la page toute entière) avec le paramètre spécial *, ce qui génère en variable locale la liste de toutes les balises de la page. La simple création de cette liste peut déjà être assez coûteuse, et je ne parle pas des diverses opérations effectuées dessus par la suite.
Un getElementsByTagName avec un tagname particulier est déjà beaucoup plus efficace, et si en plus il y a moyen de l'appeler sur autre chose que le <body>, ça réduit d'autant le champ de possibilités.
;)
Pour info il est vivement recommandé d'utiliser la fonction de sélectione la plus adaptée possible, parmi toutes celles proposées par les navigateurs :
- getElementById
- getElementsByTagName (sous IE6, ne marche que sur <body>)
- getElementsByName (obsolète)
- getElementsByClassName (récente donc pas implémentée partout)
- etc.
Il faut faire confiance aux routines proposées par les navigateurs, qui sont susceptibles d'optimiser toujours plus leurs algorithmes internes. Si on utilise correctement ces fonctions, notre script s'améliore tout seul à mesure que les navigateurs évoluent.
Dans le cas présent, la fonction getElementsByTagName est appellée sur body (à peu de chose près, la page toute entière) avec le paramètre spécial *, ce qui génère en variable locale la liste de toutes les balises de la page. La simple création de cette liste peut déjà être assez coûteuse, et je ne parle pas des diverses opérations effectuées dessus par la suite.
Un getElementsByTagName avec un tagname particulier est déjà beaucoup plus efficace, et si en plus il y a moyen de l'appeler sur autre chose que le <body>, ça réduit d'autant le champ de possibilités.
;)