Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1220 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [HTML / JS] getelementbyid aidez moi !!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[HTML / JS] getelementbyid aidez moi !!!

n°244176
k666
dites non à petitmou
Posté le 13-11-2002 à 15:06:25  profilanswer
 

Salut,
j'aimerais obtenir tous les ID d'une page HTML avec du Javascript mais je ne sais pas comment faire ... peut être avec DOM ? ou ya t'il une solution plus facile et rapide ? j'aimerais par exemple que:
 
 

Code :
  1. <html>
  2. <body>
  3.   <div id="/1/">
  4.     <div id="/1/a">pouet</div>
  5.   </div>
  6.   <div id="/2/"></div>
  7. </body>
  8. </html>


la fonction ou quoique ce soit puisse me donner un tableau avec /1/ , /1/a , /2/ etc... !!! aidez moi silvous plait :( je galère je sais pas faire ça et c hyper urgent que j'y arrive :( merci :)

mood
Publicité
Posté le 13-11-2002 à 15:06:25  profilanswer
 

n°244180
gm_superst​ar
Appelez-moi Super
Posté le 13-11-2002 à 15:11:41  profilanswer
 

Commence déjà par corriger tes id :
 
http://www.w3.org/TR/html4/struct/global.html#adef-id

Citation :

This attribute assigns a name to an element. This name must be unique in a document.


Citation :

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-" ), underscores ("_" ), colons (":" ), and periods ("." ).


Message édité par gm_superstar le 13-11-2002 à 15:11:52

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
n°244184
k666
dites non à petitmou
Posté le 13-11-2002 à 15:17:14  profilanswer
 

yaisse! bon merci pour le tuyau, ils seront toujours uniques mes ID pask'ils proviennent d'une base de données mais bon je coderai avec des '-' à la place des '/' mais sinon t'as pas une réponse pour balayer les ID ?

n°244191
lorill
Posté le 13-11-2002 à 15:22:25  profilanswer
 

Code :
  1. ids = new Array();
  2. elems = document.getElementsByTagName("div" );
  3. for(i=0;i<elems.length;i++)
  4. {
  5.   ids[i] = elems.id; //ou un truc du genre, a verifier
  6. )

n°244197
k666
dites non à petitmou
Posté le 13-11-2002 à 15:29:37  profilanswer
 

cool :) c une façon de le faire!
mais est-ce possible, d'une certain façon, de faire :
 
all_ids = new Array();
 
all_ids = document.getElementById() ;
 
sans préciser lequel et qu'il y mette TOUT ?

n°244201
lorill
Posté le 13-11-2002 à 15:34:28  profilanswer
 

ben c'est pas le but.
mais vu que tu dis que ces id viennent d'une base, pourquoi tu genererais pas le tableau en meme temps que la page  :??:

n°244214
gm_superst​ar
Appelez-moi Super
Posté le 13-11-2002 à 15:56:04  profilanswer
 

k666 a écrit a écrit :

cool :) c une façon de le faire!
mais est-ce possible, d'une certain façon, de faire :
 
all_ids = new Array();
 
all_ids = document.getElementById() ;
 
sans préciser lequel et qu'il y mette TOUT ?



Non ça marche pas comme ça. Si tu veux récupérer tous les ids d'un élément particulier (DIV par exemple) dans ce cas la méthode de lorill est la bonne.
 
Si par contre tu as des ids sur tout un tas d'éléments différents ben il faut parcourir tout l'arbre DOM avec une chouette fonction récursive :)
 
 
Pour un élément donné :  
 - S'il a un attribut ID, le mettre dans le tableau.
 - S'il a des enfants :
   - Appeler la fonction pour chacun de ses enfants.
 
 
Mais il est clair que si les ids sont connus dans la base autant faire la requête qui va bien pour remplir dès le début le tableau JavaScript.


Message édité par gm_superstar le 13-11-2002 à 15:56:31

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
n°244228
k666
dites non à petitmou
Posté le 13-11-2002 à 16:04:21  profilanswer
 

en fait j'essaye de changer dynamiquement la classe de mes éléments en fonction de certaines actions sur ceux ci, mais c'est controlé par un autre frame qui gère tout l'affichage ... maintenant je suis confronté à un ptit bug de IE je ne sais pas à quoi ça peut être du :( si vous pouvez m'aider ! j'ai deux exemples : un exemple dans lequel je change directement toutes les classes de mes trucs et un autre dans lequel j'alerte à chaque changement, le premier exemple me rend le tout transparent et c hyper chaint paske ça marche pas du coup :( par contre le deuxième, vu quia une alerte, je ne sais pourquoi il arrive à tout bien faire comme je lui ai dit ! si vous pouvez m'aider :) sur mozilla ça marche nickel mais pas sur IE et je sais pas quoi faire pour réparer ça: donc
 
1er exemple:

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <head>
  4.  <style>
  5.   .uninitialized {
  6.   }
  7.   .init {
  8.    position:absolute;
  9.    top:20px; left:20px;
  10.    display:block;
  11.    font-size:30;
  12.   }
  13.   .doss_lev1_out {
  14.    position:relative;
  15.    left:10px;
  16.    font-size:16;
  17.   }
  18.   .doss_lev2_out {
  19.    position:relative;
  20.    left:20px;
  21.    font-size:14;
  22.   }
  23.   .doss_lev3_out {
  24.    position:relative;
  25.    left:30px;
  26.    font-size:12;
  27.   }
  28.   .act_lev1_out {
  29.    position:relative;
  30.    left:15px;
  31.    font-size:16;
  32.   }
  33.   .act_lev2_out {
  34.    position:relative;
  35.    left:25px;
  36.    font-size:14;
  37.   }
  38.   .act_lev3_out {
  39.    position:relative;
  40.    left:35px;
  41.    font-size:12;
  42.   }
  43.  </style>
  44. </head>
  45. <body onload="javascript:comeon('/1057/');">
  46.  <script>
  47.   function scanAndSet(do_what)
  48.   {
  49.    ids = new Array();
  50.    elems = document.getElementsByTagName("div" );
  51.    for(i=0;i<elems.length;i++)
  52.    {
  53.     if (elems[i].id.indexOf(do_what) == 0)
  54.     {
  55.      tmp = elems[i].id.split("/" );
  56.      level = tmp.length - 2 ;
  57.      if ( tmp[tmp.length-1] == "" )
  58.      {
  59.       nclass = "doss_lev"+level+"_out";
  60.      // alert(nclass);
  61.       document.getElementById(elems[i].id).className = nclass;
  62.      }
  63.      else
  64.      {
  65.       document.getElementById(elems[i].id).className = "act_lev"+level+"_out";
  66.      }
  67.     }
  68.    }
  69.   }
  70.   function comeon(do_what)
  71.   {
  72.    document.getElementById(do_what).className = "init";
  73.    window.setTimeout('scanAndSet('+do_what+')','1000');
  74.   }
  75.  </script>
  76.  <div id="/1057/" class="uninitialized">
  77.   Test avec URLS bidon
  78.   <div  id="/1057/1058/">
  79.    (x)<A href="javascript:navgoto('/1057/1058');" color="blue">Sites</A>
  80.    <div id="/1057/1058/642">
  81.     (o)<A href="javascript:navgoto('/1057/1058/642');">Google site</A>
  82.    </div>
  83.    <div id="/1057/1058/641">
  84.     (o)<A href="javascript:navgoto('/1057/1058/641');">Forum hardware</A>
  85.    </div>
  86.    <div id="/1057/1058/643">
  87.     (o)<A href="javascript:navgoto('/1057/1058/643');">LeMonde</A>
  88.    </div>
  89.   </div>
  90.   <div id="/1057/1059/">
  91.    (x)<A href="javascript:navgoto('/1057/1059');">Images</A>
  92.    <div id="/1057/1059/644">
  93.     (o)<A href="javascript:navgoto('/1057/1059/644');">Doggy</A>
  94.    </div>
  95.    <div id="/1057/1059/649">
  96.     (o)<A href="javascript:navgoto('/1057/1059/649');">image sympa</A>
  97.    </div>
  98.    <div id="/1057/1059/650">
  99.     (o)<A href="javascript:navgoto('/1057/1059/650');">imageotte</A>
  100.    </div>
  101.   </div>
  102.  </div>
  103. </body>
  104. </html>


 
et deuxième exemple:
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <head>
  4.  <style>
  5.   .uninitialized {
  6.   }
  7.   .init {
  8.    position:absolute;
  9.    top:20px; left:20px;
  10.    display:block;
  11.    font-size:30;
  12.   }
  13.   .doss_lev1_out {
  14.    position:relative;
  15.    left:10px;
  16.    font-size:16;
  17.   }
  18.   .doss_lev2_out {
  19.    position:relative;
  20.    left:20px;
  21.    font-size:14;
  22.   }
  23.   .doss_lev3_out {
  24.    position:relative;
  25.    left:30px;
  26.    font-size:12;
  27.   }
  28.   .act_lev1_out {
  29.    position:relative;
  30.    left:15px;
  31.    font-size:16;
  32.   }
  33.   .act_lev2_out {
  34.    position:relative;
  35.    left:25px;
  36.    font-size:14;
  37.   }
  38.   .act_lev3_out {
  39.    position:relative;
  40.    left:35px;
  41.    font-size:12;
  42.   }
  43.  </style>
  44. </head>
  45. <body onload="javascript:comeon('/1057/');">
  46.  <script>
  47.   function scanAndSet(do_what)
  48.   {
  49.    ids = new Array();
  50.    elems = document.getElementsByTagName("div" );
  51.    for(i=0;i<elems.length;i++)
  52.    {
  53.     if (elems[i].id.indexOf(do_what) == 0)
  54.     {
  55.      tmp = elems[i].id.split("/" );
  56.      level = tmp.length - 2 ;
  57.      if ( tmp[tmp.length-1] == "" )
  58.      {
  59.       nclass = "doss_lev"+level+"_out";
  60.       alert(nclass);
  61.       document.getElementById(elems[i].id).className = nclass;
  62.      }
  63.      else
  64.      {
  65.       document.getElementById(elems[i].id).className = "act_lev"+level+"_out";
  66.      }
  67.     }
  68.    }
  69.   }
  70.   function comeon(do_what)
  71.   {
  72.    document.getElementById(do_what).className = "init";
  73.    window.setTimeout('scanAndSet('+do_what+')','1000');
  74.   }
  75.  </script>
  76.  <div id="/1057/" class="uninitialized">
  77.   Test avec URLS bidon
  78.   <div  id="/1057/1058/">
  79.    (x)<A href="javascript:navgoto('/1057/1058');" color="blue">Sites</A>
  80.    <div id="/1057/1058/642">
  81.     (o)<A href="javascript:navgoto('/1057/1058/642');">Google site</A>
  82.    </div>
  83.    <div id="/1057/1058/641">
  84.     (o)<A href="javascript:navgoto('/1057/1058/641');">Forum hardware</A>
  85.    </div>
  86.    <div id="/1057/1058/643">
  87.     (o)<A href="javascript:navgoto('/1057/1058/643');">LeMonde</A>
  88.    </div>
  89.   </div>
  90.   <div id="/1057/1059/">
  91.    (x)<A href="javascript:navgoto('/1057/1059');">Images</A>
  92.    <div id="/1057/1059/644">
  93.     (o)<A href="javascript:navgoto('/1057/1059/644');">Doggy</A>
  94.    </div>
  95.    <div id="/1057/1059/649">
  96.     (o)<A href="javascript:navgoto('/1057/1059/649');">image sympa</A>
  97.    </div>
  98.    <div id="/1057/1059/650">
  99.     (o)<A href="javascript:navgoto('/1057/1059/650');">imageotte</A>
  100.    </div>
  101.   </div>
  102.  </div>
  103. </body>
  104. </html>


 
merci d'avoir le courage de tester :) je ne sais pas pourquoi dans le premier exemple rien ne s'affiche ! :'(

n°244257
k666
dites non à petitmou
Posté le 13-11-2002 à 16:28:14  profilanswer
 

bon c plus facile peut être avec des liens :D
 
celle qui marche pas:
 
http://kpoman.dyndns.org/test_js_css.html
 
 
celle qui marche (que paskia une alert)
 
http://kpoman.dyndns.org/test_js_css2.html
 
 
voilà si vous pouviez m'aider siouplé :'( je pense que c un bug mais peut être que vous sauriez me dire ?

n°244282
gm_superst​ar
Appelez-moi Super
Posté le 13-11-2002 à 16:39:27  profilanswer
 

Heu... quel est le but de ton JavaScript ? Juste appliquer un style particulier à un élément en fonction de son niveau dans l'arbre ?


Message édité par gm_superstar le 13-11-2002 à 16:40:00

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
mood
Publicité
Posté le 13-11-2002 à 16:39:27  profilanswer
 

n°244313
k666
dites non à petitmou
Posté le 13-11-2002 à 17:00:26  profilanswer
 

ouais en fait je dois gérer bcp d'états et de styles en fonction de plusieurs paramètres ... je génère d'abord via une bdd+xml+xsl une structure de DIVs avec des ID, puis après via une API que je suis entrain de faire je gère complètement l'affichage ... il faut donc créer une super feuille de style css de malades avec tous les cas possibles, du style:
 
.dossier_niveau1_mouseon_nonclickable {
 /* le style ici */
}
 
ou alors
 
.activite_niveau2_mouseout_clickable {
 /* le style ici */
}
 
 
etc...
 
je viens de me rendre compte que, dans mon premier lien, si on resize la page ça s'affiche du coup :( c bête :( du coup je sais pas comment faire :'(

n°244367
k666
dites non à petitmou
Posté le 13-11-2002 à 17:11:29  profilanswer
 

en fait on est entrain de réaliser une interface de navigation assez modulaire,
mais je galère avec ces styles et tout le bordel paske des fois ça passe pas, je crois que netscape a du mal pour positionner des div absolus ou relatifs ou un truc du genre ?

n°244384
gm_superst​ar
Appelez-moi Super
Posté le 13-11-2002 à 17:22:53  profilanswer
 

Bon désolé j'ai pas le courage de me plonger dans ton truc, mais sache qu'il est possible d'associer plusieurs styles à un élément :
 
class="document niveau1 clickable"
 
tu as ensuite tes styles séparés :
 
.document {
 ...
}
 
.niveau1 {
 ...
}
 
.clickable {
 ...
}
 
div:hover {
 ...
}


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [HTML / JS] getelementbyid aidez moi !!!

 

Sujets relatifs
[HTML] comment changer un bouton de formulaire par une image?[HTML, JS] tri d'un tableau
[HTML, JS] Comment utiliser deux targets dans un lienHTML 4.01 Strict
faire interprter du code HTML dans un textarea[HTML ou PHP] Un site pour une association ?
[HTML] taille optimale pour une page internetBesoin d'aide pour un compteur html
HTML inclue dans un mail[HTML,JS] Tester si une popup est toujours ouverte
Plus de sujets relatifs à : [HTML / JS] getelementbyid aidez moi !!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR