Faire apparaitre et disparaitre des éléments - IE m'énerve !

Eléphant du PHP | 52 Messages

09 oct. 2006, 10:34

Bonjour,

Je souhaite faire un script simplissime :

En cliquant sur un lien, on fait apparaitre une balise DIV.

Pour cela je fais un lien "cliquez ici" avec

Code : Tout sélectionner

<a href="#" onClick="javascript:aff('1');">Cliquez ici</a>
La fonction aff() est la suivante :

Code : Tout sélectionner

function aff(id){ pasmoi = document.getElementById("pasmoi"); if (id == "1") { pasmoi.style.display = ""; } else { pasmoi.style.display = "none"; } }
Malheureusement, il y a des erreurs avec IE alors que Firefox n'a aucun souci. Que faire ? Merci

Eléphant du PHP | 441 Messages

09 oct. 2006, 13:34

Bon j'imagine que ta balise a bien un id 1? :)
Ensuite essaie en donnant une valeur au display: block ou inline, au lieu de ne rien mettre.
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

younes475
Invité n'ayant pas de compte PHPfrance

09 oct. 2006, 16:17

voici un scipt realsé par ajax,
je pense que tu dois mettre , visible et hidden

Code : Tout sélectionner

<script> var saveHeight; var showing = true; function toggleSlide() { if ( showing ) { slideMenuUp(); showing = false; } else { slideMenuDown(); showing = true; } } function slideMenuUp() { var menu = $('demosMenu'); saveHeight = menu.offsetHeight; menu.style.overflow = "hidden"; new Rico.Effect.Size( menu, null, 1, 120, 8 ); $('demoPanelLink').innerHTML = "Show demo panel"; } function slideMenuDown() { var menu = $('demosMenu'); new Rico.Effect.Size( menu, null, saveHeight, 120, 8, {complete:function() { $(menu).style.overflow = "visible"; }} ); $('demoPanelLink').innerHTML = "Hide demo panel"; } </script>
bon courage

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 oct. 2006, 17:50

Supprime le "javascript" de l'événement onclick...

Code : Tout sélectionner

<a href="#" onclick="aff('1');">Cliquez ici</a>
tu peux éventuellement le placer la même chose mais dans l'attribut "href" :

Code : Tout sélectionner

<a href="javascript:aff('1');" >Cliquez ici</a>

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

09 oct. 2006, 23:10

Et avec ceci ?...

Code : Tout sélectionner

function aff(id) { isIE = (document.all); isNN6 = (!isIE) && (document.getElementById); if (isIE) pasmoi = document.all['pasmoi']; if (isNN6) pasmoi = document.getElementById("pasmoi"); pasmoi.style.display = (id==1) ? "block" : "none"; // pas de "" autour du 1 et un p'tit opérateur ternaire en prime ! }

Eléphant du PHP | 52 Messages

10 oct. 2006, 08:53

Bonjour,

Rien ne fonctionne... IE merdoit toujours autant !

J'ai essayé le dernier script proposé par Albat mais ça ne marche pas sous Firefox ni sur IE.

"cet objet ne gère pas cet objet ou cette méthode"

J'ai viré les "javascript" dans mon code "onclick"... Rien à faire non plus.

Le javascript, je n'y comprends vraiment rien mais il me faut absolument réussir ça...

Merci pour votre aide !

Eléphant du PHP | 441 Messages

10 oct. 2006, 09:04

Essaie de nous donner un code plus complet.
Aussi j'ai remarqué qu'IE aime bien que l'on déclare ses variables:

Code : Tout sélectionner

var taVariable
Ton code qui fonctionne maintenant:

Code : Tout sélectionner

<html> <head> <style> </style> <script> function aff(id){ var pasmoi = document.getElementById("pasmoi"); if (id == "1") { pasmoi.style.display = "block"; } else { pasmoi.style.display = "none"; } } </script> </head> <body> <a href="#" onClick="javascript:aff('1');">Cliquez ici</a> <div id="pasmoi" style="background-color: #f00;display: none;">CA MARCHE ! </div> </body> </html>
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 oct. 2006, 09:23

J'ai essayé le dernier script proposé par Albat mais ça ne marche pas sous Firefox ni sur IE.
J'espère que tu as compris qu'il fallait remplacer les "pasmoi" par les identifiants de ton site :roll:

J'ai travaillé avec Albat sur ce code hier soir et je peut t'assurer qu'il fonctionne. Sur FF comme sur IE ;)

le copier/coller de code ne mene jamais bien loin [-(
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 oct. 2006, 17:19

J'ai essayé le dernier script proposé par Albat mais ça ne marche pas sous Firefox ni sur IE.
Qu'ouis-je ? :afraid:

Y a quelqu'un qui prétendrait qu'un script
écrit par mézigue et débuggé par zeus ne marche pas ??? :shock: :evil:
Quitte tes lunettes et approche... :axe: :lol:

Je confirme que ce script fonctionne parfaitement.
(Il est d'ailleurs en ligne sur l'un de mes sites.)

Mais comme te l'a rappelé zeus,
il ne fonctionnera que si tu l'as adapté comme il faut.

Il te faut donc vérifier que l'objet
que tu veux faire apparaître/disparaître est bien nommé "pasmoi" :

Code : Tout sélectionner

<div id="pasmoi"> ... </div>
ou changer le paramètre "pasmoi" dans ta fonction javascript :

Code : Tout sélectionner

if (isIE) letruc = document.all['machin']; if (isNN6) letruc = document.getElementById("machin"); letruc.style.display = (id==1) ? "block" : "none";

Eléphant du PHP | 100 Messages

10 oct. 2006, 19:27

Code : Tout sélectionner

<script language="javascript" type="text/javascript"> function galleryShow(GalId){ if (document.getElementById){ curElement = document.getElementById(GalId); } else if (document.all){ curElement = document.all[GalId]; } if(curElement.style.display == 'block'){ curElement.style.display = 'none'; } else if(curElement.style.display == 'none' || curElement.style.display == ''){ curElement.style.display = 'block'; } } </script>