J'ai encore et toujours de nouvelles questions concernant JavaScript.
Dans un document HTML, il y a un certain nombre d'éléments (div, p,
etc.) avec des attributs class="qqch". Je voudrais le plus simplement
possible changer le style 'display' de tous ces éléments, par exemple
style.display = "none".
Comme d'hab j'ai eu plusieurs idées, mais je ne sais pas laquelle est
possible.
1) Insérer un nouveau style CSS dans la feuille de style.
J'ai trouvé sur la toile des méthodes insertRule et addRule mais
aucune ne semble standard (même le nombre de paramètres de InsertRule
change entre IE6 et Gecko d'après ce que j'ai lu).
2) Rechercher tous les n½uds du document de classe "qqch".
Je suppose qu'il n'existe pas de fonction getElementByClass() ou
getElementByClassName()... faut-il que je parcoure tout l'arbre du
DOM à la recherche de ma classe ?
3) Autre chose ?
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
Créer une nouvelle class, et changer le classname. je te propose ca plutot que de ne changer que l'attribut display, car si tu as d'autres attibuts de style a changer, tu les ajoutes à la classe et le tour est jouer.
pour rechercher tes éléments qui ont tous la meme classe, voici une fonction qui devrait t'aider:
function FindByClassName(el, className) {
var i, tmp;
if (el.className == className) return el;
// Search for a descendant element assigned the given class.
for (i = 0; i < el.childNodes.length; i++) { tmp = FindByClassName(el.childNodes[i], className); if (tmp != null) return tmp; }
return null; }
SLUT.
Olivier Miakinen wrote:
Bonjour,
J'ai encore et toujours de nouvelles questions concernant JavaScript.
Dans un document HTML, il y a un certain nombre d'éléments (div, p, etc.) avec des attributs class="qqch". Je voudrais le plus simplement possible changer le style 'display' de tous ces éléments, par exemple style.display = "none".
Comme d'hab j'ai eu plusieurs idées, mais je ne sais pas laquelle est possible.
1) Insérer un nouveau style CSS dans la feuille de style. J'ai trouvé sur la toile des méthodes insertRule et addRule mais aucune ne semble standard (même le nombre de paramètres de InsertRule change entre IE6 et Gecko d'après ce que j'ai lu).
2) Rechercher tous les n?uds du document de classe "qqch". Je suppose qu'il n'existe pas de fonction getElementByClass() ou getElementByClassName()... faut-il que je parcoure tout l'arbre du DOM à la recherche de ma classe ?
3) Autre chose ?
Il faut faire les 2,
Créer une nouvelle class, et changer le classname.
je te propose ca plutot que de ne changer que l'attribut display, car si tu
as d'autres attibuts de style a changer, tu les ajoutes à la classe et le
tour est jouer.
pour rechercher tes éléments qui ont tous la meme classe, voici une fonction
qui devrait t'aider:
function FindByClassName(el, className) {
var i, tmp;
if (el.className == className)
return el;
// Search for a descendant element assigned the given class.
for (i = 0; i < el.childNodes.length; i++) {
tmp = FindByClassName(el.childNodes[i], className);
if (tmp != null)
return tmp;
}
return null;
}
SLUT.
Olivier Miakinen wrote:
Bonjour,
J'ai encore et toujours de nouvelles questions concernant JavaScript.
Dans un document HTML, il y a un certain nombre d'éléments (div, p,
etc.) avec des attributs class="qqch". Je voudrais le plus simplement
possible changer le style 'display' de tous ces éléments, par exemple
style.display = "none".
Comme d'hab j'ai eu plusieurs idées, mais je ne sais pas laquelle est
possible.
1) Insérer un nouveau style CSS dans la feuille de style.
J'ai trouvé sur la toile des méthodes insertRule et addRule mais
aucune ne semble standard (même le nombre de paramètres de InsertRule
change entre IE6 et Gecko d'après ce que j'ai lu).
2) Rechercher tous les n?uds du document de classe "qqch".
Je suppose qu'il n'existe pas de fonction getElementByClass() ou
getElementByClassName()... faut-il que je parcoure tout l'arbre du
DOM à la recherche de ma classe ?
Créer une nouvelle class, et changer le classname. je te propose ca plutot que de ne changer que l'attribut display, car si tu as d'autres attibuts de style a changer, tu les ajoutes à la classe et le tour est jouer.
pour rechercher tes éléments qui ont tous la meme classe, voici une fonction qui devrait t'aider:
function FindByClassName(el, className) {
var i, tmp;
if (el.className == className) return el;
// Search for a descendant element assigned the given class.
for (i = 0; i < el.childNodes.length; i++) { tmp = FindByClassName(el.childNodes[i], className); if (tmp != null) return tmp; }
return null; }
SLUT.
Olivier Miakinen wrote:
Bonjour,
J'ai encore et toujours de nouvelles questions concernant JavaScript.
Dans un document HTML, il y a un certain nombre d'éléments (div, p, etc.) avec des attributs class="qqch". Je voudrais le plus simplement possible changer le style 'display' de tous ces éléments, par exemple style.display = "none".
Comme d'hab j'ai eu plusieurs idées, mais je ne sais pas laquelle est possible.
1) Insérer un nouveau style CSS dans la feuille de style. J'ai trouvé sur la toile des méthodes insertRule et addRule mais aucune ne semble standard (même le nombre de paramètres de InsertRule change entre IE6 et Gecko d'après ce que j'ai lu).
2) Rechercher tous les n?uds du document de classe "qqch". Je suppose qu'il n'existe pas de fonction getElementByClass() ou getElementByClassName()... faut-il que je parcoure tout l'arbre du DOM à la recherche de ma classe ?
3) Autre chose ?
Bobe
Olivier Miakinen nous a dit le 03/02/2005 13:38:
1) Insérer un nouveau style CSS dans la feuille de style. J'ai trouvé sur la toile des méthodes insertRule et addRule mais aucune ne semble standard (même le nombre de paramètres de InsertRule change entre IE6 et Gecko d'après ce que j'ai lu).
C'est effectivement la solution la plus propre et rapide.
Il faudra faire attention à la spécificité du sélecteur utilisé. Celui ci doit avoir assez de poids pour l'emporter sur la déclaration précédente dans la feuille de style.
Malheureusement, cela ne marchera pas dans Opera. Celui-ci ne supporte même pas la collection styleSheets (Sa plus grosse lacune dans son support du DOM amha).
2) Rechercher tous les n½uds du document de classe "qqch". Je suppose qu'il n'existe pas de fonction getElementByClass() ou getElementByClassName()... faut-il que je parcoure tout l'arbre du DOM à la recherche de ma classe ?
Pour le fun, la même chose en utilisant l'interface nodeIterator du DOM traversal (La dite-interface n'est supportée que par Opera): http://dev.webnaute.net/DOM/Traversal/BAS/getElementsByClass
-- Bobe (Aurélien Maille) http://webnaute.net
"la vie d'un geek est un combat perpétuel contre l'imperfection"
Olivier Miakinen nous a dit le 03/02/2005 13:38:
1) Insérer un nouveau style CSS dans la feuille de style.
J'ai trouvé sur la toile des méthodes insertRule et addRule mais
aucune ne semble standard (même le nombre de paramètres de InsertRule
change entre IE6 et Gecko d'après ce que j'ai lu).
C'est effectivement la solution la plus propre et rapide.
Il faudra faire attention à la spécificité du sélecteur utilisé. Celui
ci doit avoir assez de poids pour l'emporter sur la déclaration
précédente dans la feuille de style.
Malheureusement, cela ne marchera pas dans Opera. Celui-ci ne supporte
même pas la collection styleSheets (Sa plus grosse lacune dans son
support du DOM amha).
2) Rechercher tous les n½uds du document de classe "qqch".
Je suppose qu'il n'existe pas de fonction getElementByClass() ou
getElementByClassName()... faut-il que je parcoure tout l'arbre du
DOM à la recherche de ma classe ?
Pour le fun, la même chose en utilisant l'interface nodeIterator du DOM
traversal (La dite-interface n'est supportée que par Opera):
http://dev.webnaute.net/DOM/Traversal/BAS/getElementsByClass
--
Bobe (Aurélien Maille)
http://webnaute.net
"la vie d'un geek est un combat perpétuel contre l'imperfection"
1) Insérer un nouveau style CSS dans la feuille de style. J'ai trouvé sur la toile des méthodes insertRule et addRule mais aucune ne semble standard (même le nombre de paramètres de InsertRule change entre IE6 et Gecko d'après ce que j'ai lu).
C'est effectivement la solution la plus propre et rapide.
Il faudra faire attention à la spécificité du sélecteur utilisé. Celui ci doit avoir assez de poids pour l'emporter sur la déclaration précédente dans la feuille de style.
Malheureusement, cela ne marchera pas dans Opera. Celui-ci ne supporte même pas la collection styleSheets (Sa plus grosse lacune dans son support du DOM amha).
2) Rechercher tous les n½uds du document de classe "qqch". Je suppose qu'il n'existe pas de fonction getElementByClass() ou getElementByClassName()... faut-il que je parcoure tout l'arbre du DOM à la recherche de ma classe ?
Pour le fun, la même chose en utilisant l'interface nodeIterator du DOM traversal (La dite-interface n'est supportée que par Opera): http://dev.webnaute.net/DOM/Traversal/BAS/getElementsByClass
-- Bobe (Aurélien Maille) http://webnaute.net
"la vie d'un geek est un combat perpétuel contre l'imperfection"
Olivier Miakinen
[ 1re solution ]
Malheureusement, cela ne marchera pas dans Opera. Celui-ci ne supporte même pas la collection styleSheets (Sa plus grosse lacune dans son support du DOM amha).
Je ne suis pas sûr de pouvoir faire l'impasse sur Opera.
Plus exactement, peut-être que mon chef serait d'accord mais moi cela me chagrine de mettre sur la touche un navigateur récent et soucieux des normes.
2) Rechercher tous les n½uds du document de classe "qqch". Je suppose qu'il n'existe pas de fonction getElementByClass() ou getElementByClassName()... faut-il que je parcoure tout l'arbre du DOM à la recherche de ma classe ?
J'ai trouvé aussi cela : http://daniel.glazman.free.fr/weblog/newarchive/2003_06_01_glazblogarc.html#s95287073
Je trouve malin l'idée de rajouter des espaces de chaque côté pour pouvoir faire un indexOf au lieu de passer à l'artillerie lourde des RegExp.
Pour le fun, la même chose en utilisant l'interface nodeIterator du DOM traversal (La dite-interface n'est supportée que par Opera): http://dev.webnaute.net/DOM/Traversal/BAS/getElementsByClass
Bon, alors ça c'est niet pour la même raison que plus haut... enfin pour la raison inverse... enfin bref, c'est non : je ne peux faire l'impasse ni sur le lézard, ni sur le dinosaure.
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
[ 1re solution ]
Malheureusement, cela ne marchera pas dans Opera. Celui-ci ne supporte
même pas la collection styleSheets (Sa plus grosse lacune dans son
support du DOM amha).
Je ne suis pas sûr de pouvoir faire l'impasse sur Opera.
Plus exactement, peut-être que mon chef serait d'accord mais moi cela me
chagrine de mettre sur la touche un navigateur récent et soucieux des
normes.
2) Rechercher tous les n½uds du document de classe "qqch".
Je suppose qu'il n'existe pas de fonction getElementByClass() ou
getElementByClassName()... faut-il que je parcoure tout l'arbre du
DOM à la recherche de ma classe ?
J'ai trouvé aussi cela :
http://daniel.glazman.free.fr/weblog/newarchive/2003_06_01_glazblogarc.html#s95287073
Je trouve malin l'idée de rajouter des espaces de chaque côté pour
pouvoir faire un indexOf au lieu de passer à l'artillerie lourde des RegExp.
Pour le fun, la même chose en utilisant l'interface nodeIterator du DOM
traversal (La dite-interface n'est supportée que par Opera):
http://dev.webnaute.net/DOM/Traversal/BAS/getElementsByClass
Bon, alors ça c'est niet pour la même raison que plus haut... enfin pour
la raison inverse... enfin bref, c'est non : je ne peux faire l'impasse
ni sur le lézard, ni sur le dinosaure.
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
Malheureusement, cela ne marchera pas dans Opera. Celui-ci ne supporte même pas la collection styleSheets (Sa plus grosse lacune dans son support du DOM amha).
Je ne suis pas sûr de pouvoir faire l'impasse sur Opera.
Plus exactement, peut-être que mon chef serait d'accord mais moi cela me chagrine de mettre sur la touche un navigateur récent et soucieux des normes.
2) Rechercher tous les n½uds du document de classe "qqch". Je suppose qu'il n'existe pas de fonction getElementByClass() ou getElementByClassName()... faut-il que je parcoure tout l'arbre du DOM à la recherche de ma classe ?
J'ai trouvé aussi cela : http://daniel.glazman.free.fr/weblog/newarchive/2003_06_01_glazblogarc.html#s95287073
Je trouve malin l'idée de rajouter des espaces de chaque côté pour pouvoir faire un indexOf au lieu de passer à l'artillerie lourde des RegExp.
Pour le fun, la même chose en utilisant l'interface nodeIterator du DOM traversal (La dite-interface n'est supportée que par Opera): http://dev.webnaute.net/DOM/Traversal/BAS/getElementsByClass
Bon, alors ça c'est niet pour la même raison que plus haut... enfin pour la raison inverse... enfin bref, c'est non : je ne peux faire l'impasse ni sur le lézard, ni sur le dinosaure.
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
ASM
Dans un document HTML, il y a un certain nombre d'éléments (div, p, etc.) avec des attributs class="qqch". Je voudrais le plus simplement possible changer le style 'display' de tous ces éléments, par exemple style.display = "none".
Comme d'hab j'ai eu plusieurs idées, mais je ne sais pas laquelle est possible.
Moi non plus ;-) en voilà déjà une :
// cacheMtreTout('qqch',true/false);
function cacheMtreTout(laClasse,ouinon){ var D = document.getElementsByTagName('body')[0].childNodes; for(var i=0;i<D.length;i++) if(D[i].className == laClasse) D[i].style.display = ouinon? 'block' : 'none'; }
-- ******************************************************* Stéphane MORIAUX et son vieux Mac *******************************************************
Dans un document HTML, il y a un certain nombre d'éléments (div, p,
etc.) avec des attributs class="qqch". Je voudrais le plus simplement
possible changer le style 'display' de tous ces éléments, par exemple
style.display = "none".
Comme d'hab j'ai eu plusieurs idées, mais je ne sais pas laquelle est
possible.
Moi non plus ;-)
en voilà déjà une :
// cacheMtreTout('qqch',true/false);
function cacheMtreTout(laClasse,ouinon){
var D = document.getElementsByTagName('body')[0].childNodes;
for(var i=0;i<D.length;i++)
if(D[i].className == laClasse)
D[i].style.display = ouinon? 'block' : 'none';
}
--
*******************************************************
Stéphane MORIAUX et son vieux Mac
*******************************************************
Dans un document HTML, il y a un certain nombre d'éléments (div, p, etc.) avec des attributs class="qqch". Je voudrais le plus simplement possible changer le style 'display' de tous ces éléments, par exemple style.display = "none".
Comme d'hab j'ai eu plusieurs idées, mais je ne sais pas laquelle est possible.
Moi non plus ;-) en voilà déjà une :
// cacheMtreTout('qqch',true/false);
function cacheMtreTout(laClasse,ouinon){ var D = document.getElementsByTagName('body')[0].childNodes; for(var i=0;i<D.length;i++) if(D[i].className == laClasse) D[i].style.display = ouinon? 'block' : 'none'; }
-- ******************************************************* Stéphane MORIAUX et son vieux Mac *******************************************************
ASM
en voilà déjà une :
testé IE5.2 et Safari (Nouveau Mac)
-- ******************************************************* Stéphane MORIAUX et son vieux Mac Aide Pages Perso (images & couleurs, formulaire, CHP) http://perso.wanadoo.fr/stephane.moriaux/internet/ *******************************************************
en voilà déjà une :
testé IE5.2 et Safari (Nouveau Mac)
--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************
Et Classic ? à quoi ça sert qu'il se décarcasse ? (je vais peut-être y mettre IE 4 en +)
La demande avait clairement écarté NN4 ce me semble.
-- ******************************************************* Stéphane MORIAUX et son vieux Mac encore d'active *******************************************************
Dans le message :42026A4B.9E4C8908@wanadoo.fr,
ASM <stephaneOTEZ-MOImoriaux@wanadoo.fr> s'exclama :
testé IE5.2 et Safari (Nouveau Mac)
Tu aurais jeté ton NN 4 en même temps ?? 8-O
Et Classic ? à quoi ça sert qu'il se décarcasse ?
(je vais peut-être y mettre IE 4 en +)
La demande avait clairement écarté NN4 ce me semble.
--
*******************************************************
Stéphane MORIAUX et son vieux Mac encore d'active
*******************************************************
Et Classic ? à quoi ça sert qu'il se décarcasse ? (je vais peut-être y mettre IE 4 en +)
La demande avait clairement écarté NN4 ce me semble.
-- ******************************************************* Stéphane MORIAUX et son vieux Mac encore d'active *******************************************************
ASM
testé IE5.2 et Safari (Nouveau Mac)
nooooon? le miracle se serait-il accompli ?
Ouaiai !
Classic marche super bien ! C'est fou comme c'est plus rapide !
Le X ? bon ! bof ! le plus apparent c'est surtout la poudre aux yeux
-- ******************************************************* Stéphane MORIAUX et son vieux Mac toujours d'active *******************************************************
testé IE5.2 et Safari (Nouveau Mac)
nooooon? le miracle se serait-il accompli ?
Ouaiai !
Classic marche super bien !
C'est fou comme c'est plus rapide !
Le X ? bon ! bof !
le plus apparent c'est surtout la poudre aux yeux
--
*******************************************************
Stéphane MORIAUX et son vieux Mac toujours d'active
*******************************************************
Classic marche super bien ! C'est fou comme c'est plus rapide !
Le X ? bon ! bof ! le plus apparent c'est surtout la poudre aux yeux
-- ******************************************************* Stéphane MORIAUX et son vieux Mac toujours d'active *******************************************************