Javascript: Disparition DIV sauf un élement
Résolu/Fermé
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
-
5 avril 2011 à 16:38
joro2117 Messages postés 18 Date d'inscription mardi 5 avril 2011 Statut Membre Dernière intervention 22 octobre 2013 - 7 avril 2011 à 16:25
joro2117 Messages postés 18 Date d'inscription mardi 5 avril 2011 Statut Membre Dernière intervention 22 octobre 2013 - 7 avril 2011 à 16:25
A voir également:
- Javascript: Disparition DIV sauf un élement
- Telecharger javascript - Télécharger - Langages
- Afficher un tableau javascript en html ✓ - Forum Javascript
- Javascript echo ✓ - Forum PHP
- Erreur #125 javascript - Forum Mozilla Firefox
- A javascript error occurred in the main process - Forum Handicap / Accessibilté
21 réponses
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
6 avril 2011 à 08:09
6 avril 2011 à 08:09
Salut !
Si je comprends bien, tu as un div contenant toutes tes images ?
Si tu caches ton div, c'est normal que toutes les images contenues disparaissent également.
Ce que tu dois faire, c'est faire disparaître chaque image une à une.
Par exemple, en utilisant la librairie JQuery, avec le code :
tu vas cacher toutes les images ayant comme classe "images".
Après, il faut gérer le fait de ne pas cacher l'image sur laquelle tu as cliqué, en faisant un test dans ton each par exemple.
Si t'as d'autres questions, n'hésites pas !
Si je comprends bien, tu as un div contenant toutes tes images ?
Si tu caches ton div, c'est normal que toutes les images contenues disparaissent également.
Ce que tu dois faire, c'est faire disparaître chaque image une à une.
Par exemple, en utilisant la librairie JQuery, avec le code :
$('img.images').each(function(index, image) { $(image).hide(); });
tu vas cacher toutes les images ayant comme classe "images".
Après, il faut gérer le fait de ne pas cacher l'image sur laquelle tu as cliqué, en faisant un test dans ton each par exemple.
Si t'as d'autres questions, n'hésites pas !
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
7 avril 2011 à 08:38
7 avril 2011 à 08:38
Salut !
Voilà un script qui fonctionne :
Il faut que tu mette un id sur ton image (unique pour chaque image, mais après, peut importe l'id, tu peux générer un nombre aléatoire si tu veux) qui va servir à comparer l'image cliquée et les autres images.
Et il faut également une classe pour pouvoir récupérer l'ensemble des images (avec le selecteur $$('.images')) pour ensuite les cacher.
Dans ce code, on utilise prototype qui normalement doit être livré avec scriptaculous (dans le dossier lib).
Voilà, je pense que tu devrais pouvoir t'en sortir avec ça !
Si t'as d'autres questions, n'hésites pas !
Voilà un script qui fonctionne :
<html> <head> <script src="lib/prototype.js" type="text/javascript"></script> <script src="src/scriptaculous.js" type="text/javascript"></script> <script type="text/javascript"> function imageClick(image) { $$(".images").each(function(obj, index) { if (obj.id != image.id) { $(obj).fade(); } }); } </script> </head> <body> <img src="img/1.jpg" id="image_1" class="images" onclick="imageClick(this)"/> <img src="img/2.jpg" id="image_2" class="images" onclick="imageClick(this)"/> <img src="img/3.jpg" id="image_3" class="images" onclick="imageClick(this)"/> <img src="img/4.jpg" id="image_4" class="images" onclick="imageClick(this)"/> </body> </html>
Il faut que tu mette un id sur ton image (unique pour chaque image, mais après, peut importe l'id, tu peux générer un nombre aléatoire si tu veux) qui va servir à comparer l'image cliquée et les autres images.
Et il faut également une classe pour pouvoir récupérer l'ensemble des images (avec le selecteur $$('.images')) pour ensuite les cacher.
Dans ce code, on utilise prototype qui normalement doit être livré avec scriptaculous (dans le dossier lib).
Voilà, je pense que tu devrais pouvoir t'en sortir avec ça !
Si t'as d'autres questions, n'hésites pas !
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 08:19
7 avril 2011 à 08:19
Salut,
Merci de ta réponse.
Aurais-tu une manière de le faire avec Script.aculo.us ? et le test dans mon each ressemblerais à "si cette image à été cliquer ne pas la cacher ?" comment puis-je traduire ceci en Javascript.
Bonne journée
Merci de ta réponse.
Aurais-tu une manière de le faire avec Script.aculo.us ? et le test dans mon each ressemblerais à "si cette image à été cliquer ne pas la cacher ?" comment puis-je traduire ceci en Javascript.
Bonne journée
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 09:26
7 avril 2011 à 09:26
Vraiment un très grand merci, tu as été génial.
J'ai encore une dernière question à te poser. Mes images s'affichent correctement, c'est OK et ceci grâce à toi.
Ma question:
si je veux rajouter un style, un effet, ou autres éléments sur mon image qui reste après le clique.
( Par exemple dans mon cas, une image "d'un bouton back" à côter de l'image qui rafraichirait la page afin de rétablir toutes les images.
Comment devrais-je m'y prendre ?
J'ai encore une dernière question à te poser. Mes images s'affichent correctement, c'est OK et ceci grâce à toi.
Ma question:
si je veux rajouter un style, un effet, ou autres éléments sur mon image qui reste après le clique.
( Par exemple dans mon cas, une image "d'un bouton back" à côter de l'image qui rafraichirait la page afin de rétablir toutes les images.
Comment devrais-je m'y prendre ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
7 avril 2011 à 09:43
7 avril 2011 à 09:43
De rien, c'était avec plaisir :-D
Pour ton bouton, tu peux mettre un bouton n'importe où sur ta page avec un style="display:none" pour qu'il ne soit pas affiché sur la page avant de cliquer sur ton image.
Ensuite, dans ta fonction imageClick, tu récupère ton bouton, avec son id par exemple, et tu l'affiche.
Si tu veux qu'il reload ta page, tu peux l'utiliser comme ça :
<input type="button" id="..." onclick="location.reload()"/>
Bonne fin de développement !
Pour ton bouton, tu peux mettre un bouton n'importe où sur ta page avec un style="display:none" pour qu'il ne soit pas affiché sur la page avant de cliquer sur ton image.
Ensuite, dans ta fonction imageClick, tu récupère ton bouton, avec son id par exemple, et tu l'affiche.
Si tu veux qu'il reload ta page, tu peux l'utiliser comme ça :
<input type="button" id="..." onclick="location.reload()"/>
Bonne fin de développement !
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 09:47
7 avril 2011 à 09:47
Ok, c'est tout bon.
Merci Wyllyjon, tu m'as beaucoup aidé si une fois je peux faire quelques choses pour toi...
A une prochaine
Bonne journée
Merci Wyllyjon, tu m'as beaucoup aidé si une fois je peux faire quelques choses pour toi...
A une prochaine
Bonne journée
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
7 avril 2011 à 09:58
7 avril 2011 à 09:58
No pb ! Content d'avoir pu t'aider !
:-D
:-D
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 12:22
7 avril 2011 à 12:22
re,
Si 'tes encore là,
Tu sais comment faire pour interdire le clique multiple sur un lien ? enfaite autoriser que le clique simple, même le double clique ne dois pas être pris en compte.
Après j'arrête de t'embêter, promis (xD) !
Bon app
Si 'tes encore là,
Tu sais comment faire pour interdire le clique multiple sur un lien ? enfaite autoriser que le clique simple, même le double clique ne dois pas être pris en compte.
Après j'arrête de t'embêter, promis (xD) !
Bon app
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
7 avril 2011 à 14:17
7 avril 2011 à 14:17
Tu as un attribut onDblClick que tu peux mettre sur ton lien. Si tu veux que rien ne se passe, je pense que tu peux faire :
<a href="toto" onDblClick="return false;">Click</a>
Le premier click du double click sera cependant pris en compte comme un click sur le lien normal...
<a href="toto" onDblClick="return false;">Click</a>
Le premier click du double click sera cependant pris en compte comme un click sur le lien normal...
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 14:23
7 avril 2011 à 14:23
Je l'ai vu, cette méthode sur d'autre forum, mais elle ne fonctionne pas.
tu peux m'expliquer la boucle que tu m'as donner toute à l'heure je voudrais l'utiliser pour autre chose mais je ne sais pas comment l'utiliser.
$$(".images").each(function(obj, index)
tu peux m'expliquer la boucle que tu m'as donner toute à l'heure je voudrais l'utiliser pour autre chose mais je ne sais pas comment l'utiliser.
$$(".images").each(function(obj, index)
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
7 avril 2011 à 14:35
7 avril 2011 à 14:35
Ah ? En la testant chez moi, elle marche. Qd je fais un double click sur le lien, c'est bien appelé (FF3.6), et ça a l'air compatible IE aussi.
Dis-moi comment tu veux utiliser ce double click, peut-être que je pourrai t'aider.
Et le each, c'est simple :
$$(".images") : c'est le sélecteur, qui va récupérer tous les éléments sur lesquels tu vas boucler ; c'est un sélecteur CSS, donc '.' pour une classe, "#" pour un ID, etc. Tu peux mettre ('.images div') qui va récupérer tous les div sous les éléments ayant une classe image, par exemple.
Et après, pour chaque élément, le each va appeler la fonction que tu lui passe en paramètre, avec deux paramètres :
- l'élément
- son index dans l'ensemble des résultats de la sélection.
Au final, ça donne :
$$(".images").each(function(obj, index){
// Tu fais les traitements que tu veux sur l'élément obj.
});
La doc prototype : http://prototypejs.org/api/enumerable/each
Dis-moi comment tu veux utiliser ce double click, peut-être que je pourrai t'aider.
Et le each, c'est simple :
$$(".images") : c'est le sélecteur, qui va récupérer tous les éléments sur lesquels tu vas boucler ; c'est un sélecteur CSS, donc '.' pour une classe, "#" pour un ID, etc. Tu peux mettre ('.images div') qui va récupérer tous les div sous les éléments ayant une classe image, par exemple.
Et après, pour chaque élément, le each va appeler la fonction que tu lui passe en paramètre, avec deux paramètres :
- l'élément
- son index dans l'ensemble des résultats de la sélection.
Au final, ça donne :
$$(".images").each(function(obj, index){
// Tu fais les traitements que tu veux sur l'élément obj.
});
La doc prototype : http://prototypejs.org/api/enumerable/each
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 14:59
7 avril 2011 à 14:59
Merci (encore).
Enfaite je veux autoriser un seul clique, parce que sur une image j'ai mit un onclick="mafonction()", et ensuite la fonction s'exécute, le seul problème c'est que si on clique plusieurs fois sur l'image, la fonction s'exécute plusieurs fois et je voudrais qu'elle s'exécute une seule fois.
Enfaite je veux autoriser un seul clique, parce que sur une image j'ai mit un onclick="mafonction()", et ensuite la fonction s'exécute, le seul problème c'est que si on clique plusieurs fois sur l'image, la fonction s'exécute plusieurs fois et je voudrais qu'elle s'exécute une seule fois.
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
7 avril 2011 à 15:02
7 avril 2011 à 15:02
Si la fonction onDblClick ne marche pas chez toi (bizarre), tu peux aussi utiliser un système de variable que tu mets à true ou false pour savoir si tu es déjà rentré ou pas dans la fonction.
Si tu es déjà entré dans la fonction, tu fais un return; sans rien faire.
Si tu es déjà entré dans la fonction, tu fais un return; sans rien faire.
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 15:16
7 avril 2011 à 15:16
l'idée des variables est sympathiques, mais je testerais comment (cliquer ou non)?
if(cliquer ou non){
mafonction();
}else{
return;
}
if(cliquer ou non){
mafonction();
}else{
return;
}
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
7 avril 2011 à 15:18
7 avril 2011 à 15:18
Non, juste la première fois que tu passes dans ta fonction, tu change la valeur de ta variable, et la seconde fois, voyant que ta variable à changé, tu sors de ta fonction sans rien faire
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 15:22
7 avril 2011 à 15:22
en code sa donne ?
serieux je vois pas desolé
serieux je vois pas desolé
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
Modifié par wyllyjon le 7/04/2011 à 15:29
Modifié par wyllyjon le 7/04/2011 à 15:29
var dejaEntre=false; function test() { if (!dejaEntre) { dejaEntre = true; // Traitement } }
Expert technologies web et java.
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 15:49
7 avril 2011 à 15:49
merci, c'est Ok,
Tu sais comment je peux faire pour afficher quelques chose qui est cacher. Je m'explique xD.
J'ai un premier lien qui cache toute un DIV, sauf une image.
Effect.Fade(monDiv);
Et un deuxième lien qui affiche ce que j'ai cacher au paravant toute en cachant l'image garder au par avant.
Pour ce faire, je fais
Effect.Fade(monImageGarder) // pour qu'elle disparait
et je voudrais faire réapparaitre mon div.
alors je crée cette fonction, que j'utilise de cette manière
ShowEffect('monDiv'); //Pour réafficher mon div.
function ShowEffect(element) {
new Effect.Appear(element, {
duration : 2,
from : 0,
to : 1.0
});
}
Mon problème c'est que la fonction ne fais pas apparaitre le DIV, et cette fonction devrais fonctionner car je les utiliser de cette façon dans un autre projet.
var retour= document.createElement('img');
retour.setAttribute('src', 'img/retour.png');
ShowEffect(spanBack.appendChild(back));
et là mon image apparait belle et bien grâce à la fonction ShowEffect, mais pas dans l'autre situation.
Aurais tu une solution ?
Tu sais comment je peux faire pour afficher quelques chose qui est cacher. Je m'explique xD.
J'ai un premier lien qui cache toute un DIV, sauf une image.
Effect.Fade(monDiv);
Et un deuxième lien qui affiche ce que j'ai cacher au paravant toute en cachant l'image garder au par avant.
Pour ce faire, je fais
Effect.Fade(monImageGarder) // pour qu'elle disparait
et je voudrais faire réapparaitre mon div.
alors je crée cette fonction, que j'utilise de cette manière
ShowEffect('monDiv'); //Pour réafficher mon div.
function ShowEffect(element) {
new Effect.Appear(element, {
duration : 2,
from : 0,
to : 1.0
});
}
Mon problème c'est que la fonction ne fais pas apparaitre le DIV, et cette fonction devrais fonctionner car je les utiliser de cette façon dans un autre projet.
var retour= document.createElement('img');
retour.setAttribute('src', 'img/retour.png');
ShowEffect(spanBack.appendChild(back));
et là mon image apparait belle et bien grâce à la fonction ShowEffect, mais pas dans l'autre situation.
Aurais tu une solution ?
wyllyjon
Messages postés
30
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
8 avril 2011
6
7 avril 2011 à 16:08
7 avril 2011 à 16:08
Mince, je pensais t'avoir répondu, mais apparement pas...
Donc rien ne se raffiche tout simplement parce que dans le code qu'on a fait (le each), on n'a pas caché le div, mais les images.
Il te faut donc reprendre le each, et le modifier pour, au lieu de cacher les images, les rafficher !
Donc rien ne se raffiche tout simplement parce que dans le code qu'on a fait (le each), on n'a pas caché le div, mais les images.
Il te faut donc reprendre le each, et le modifier pour, au lieu de cacher les images, les rafficher !
joro2117
Messages postés
18
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
22 octobre 2013
7 avril 2011 à 16:19
7 avril 2011 à 16:19
alors cette ligne se transforme en quoi ?
$(obj).fade(); //ligne de code de la boucle.
Ceci ne fonctionne pas:
$(obj).ShowEffect(image);
ceci non plus:
ShowEffect.$(obj);
et ceci encore moins:
ShowEffect.(obj);
$(obj).fade(); //ligne de code de la boucle.
Ceci ne fonctionne pas:
$(obj).ShowEffect(image);
ceci non plus:
ShowEffect.$(obj);
et ceci encore moins:
ShowEffect.(obj);