Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 09h37   #1
Invité de passage
 
Inscription : juin 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 15
Points : 1
Points : 1
Par défaut Afficher successivement divers DIV

Bonjour tout le monde.

J'ai un petit soucis pour cacher certain div préalablement affiché.
L’idée est d'afficher une div correspondant a un lien sur un menu, et de masquer celle préalablement affiché.

Pour recuperer toute mes DIV (class="newsbox") contenues dans la DIV (id="news"), j'utilise:
Code :
document.getElementsByClassName('newsbox','news')
Par contre quand je veux modifier le style de toute ces balise, je n'ai aucun resultat. Le code fonctionne pour afficher mes DIV, par contre pas pour les masquer.

Voici le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
function show(id)
			{
				if(undefined!= elm)
					{
					/* How to check if elm is undefined or not */
                                        /* Reset de toute les Class "newsbox" contenus dans id "news" a display ='none' */
			                document.getElementsByClassName('newsbox','news').style.display ='none';
 
					}
				var elm=document.getElementById(id);
				elm.style.display = "inline-block";
			}
Merci pour votre aide


Kosen
KosenHitatchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 09h46   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 793
Points : 35 793
Code :
document.getElementsByClassName('newsbox','news')
Cette syntaxe n'existe pas...

Code :
document.getElementById('news').getElementsByClassName('newsbox');
Code :
document.getElementsByClassName('newsbox','news').style.display ='none';
getElementsByClassName(), comme le s de elements l'indique, renvoie une collection. C'est quoi la propriété style d'une collection ?
Il faut faire une boucle sur les éléments pour leur affecter le style individuellement.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 09h52   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 064
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 064
Points : 45 190
Points : 45 190
et encore ...getElementsByClassName ne fonctionne que sur les navigateurs récents.
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 10h17   #4
Invité de passage
 
Inscription : juin 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 15
Points : 1
Points : 1
Merci pour vos reponsses.

Je teste ces nouveaux éléments tout de suite. ^^

Citation:
et encore ...getElementsByClassName ne fonctionne que sur les navigateurs récents.
A l'exeption d'IE, toute les navigateur l'on implémenté depuis biens trois-quatre versions.
caniuse.com
KosenHitatchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 10h26   #5
Invité de passage
 
Inscription : juin 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 15
Points : 1
Points : 1
Ok a l'instar d'utiliser:
Code :
document.getElementsByClassName('newsbox','news')
Et t'il possible d'utiliser:
Code :
document.getElementById('news').getElementsByClassName('newsbox').style.display ='none';
@Bonivio
Tu me parlais d'une boucle, comment la construit tu pour juste modifier les class='newsbox', dans l'id='news'.

Merci
KosenHitatchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 10h33   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 064
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 064
Points : 45 190
Points : 45 190
non getElementsByName retourne une collection
la collection n'a pas de propriété style
Et la propriété style n'est pas distribuée aux éléments de la collection.

il faut donc boucler sure les elements de la collection pour appliquer individuellement le style.

Sinon regarde du coté de JQuery qui à lui intégré la distributivité a chacun des elements de la collection retournée par les selecteurs


Code :
$('#news .newsbox').css({"display":"none"});
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 10h44   #7
Invité de passage
 
Inscription : juin 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 15
Points : 1
Points : 1
J'ai pas particulierement le desir d'utiliser une librairie pour ce probleme.

Ton code de sur planet-languages me plait bien.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function changeOnglet(Num)
{
for (i=1; i<7; i++)
  {
   if(i!=Num){   			
   				 document.getElementById('Ong'+i).style.display='none';
   				 document.getElementById('Lang'+i).className='OnBack';
 
               }
   else       {             
				 document.getElementById('Ong'+i).style.display='block';
				 document.getElementById('Lang'+i).className='OnFront';
				 }               
   }
}
Par contre, a la place de renseigner le nombre de DIV y a t'il une possibilitée, de trouver leur nombre automatiquement, un truc du genre :
Code :
lenght(document.getElementById('news').getElementsByClassName('newsbox'))
Merci
KosenHitatchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 10h48   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 064
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 064
Points : 45 190
Points : 45 190
Code :
document.getElementById('news').getElementsByClassName('newsbox').length
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 10h53   #9
Invité de passage
 
Inscription : juin 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 15
Points : 1
Points : 1
Enfin une derniere question.

Quelle est le commande pour recuperer une classe particuliere dans cette colection.

Par exemple comment faire pour recuperer la seconde class='newsbox' dans id='news'.

Est-ce :
Code :
document.getElementById('news').getElementsByClassName('newsbox').2
Merci
KosenHitatchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 11h04   #10
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 064
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 064
Points : 45 190
Points : 45 190
Code :
document.getElementById('news').getElementsByClassName('newsbox')[1]
une collection en js commence à l'indexe 0
le second element à pour indice 1
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 11h13   #11
Invité de passage
 
Inscription : juin 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 15
Points : 1
Points : 1
Ok merci.
Je vais tester tout ça et je vous tient au jus. ^^
KosenHitatchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 12h08   #12
Invité de passage
 
Inscription : juin 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 15
Points : 1
Points : 1
Une petite autre question.

Quelle est la commande pour récupérer la position d'une DIV (class='newsbox' id='sport') dans la collection
Code :
document.getElementById('news').getElementsByClassName('newsbox')
Par exemple DIV (class='newsbox' id='sport') dois me retourner 2 (sport= troisieme position dans ma liste). ^^

Je sais je dire le bousin par les cheveux, mais bon

Merci
KosenHitatchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 12h35   #13
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 064
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 064
Points : 45 190
Points : 45 190
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<script type="text/javascript">
function getIndex(objid, objclass){
tabobj=document.getElementsByClassName(objclass);
var i=-1;
while(tabobj[++i]){
if(tabobj[i].id===objid){return i;}
}
}
</script>
</head>
 
<body onload="alert(getIndex('foo3','bar'))">
<input id="foo1" class="bar" />
<input id="foo2" class="bar" />
<input id="foo3" class="bar" />
<input id="foo4" class="bar" />
<input id="foo5" class="bar" />
<input id="foo6" class="bar" />
</body>
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 15h22   #14
Invité de passage
 
Inscription : juin 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 15
Points : 1
Points : 1
Merci tout fonctionne.
Je passe en résolut.
KosenHitatchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h31.


 
 
 
 
Partenaires

Hébergement Web