11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai essayé de faire un code pour afficher / masquer une zone de texte a l'aide d'un lien qui switch quand on clic dessus.
ce lien permet egalement de modifié une donné du cookie "affichage"
je vous presente mon code et j'expose mon probleme ensuite

Code:

<body>

<script language="JavaScript">

/* CREER COOKIE POUR AFFICHAGE LISTE DES CONNECTER */

var pathname=location.pathname;

	var myDomain=pathname.substring(0,pathname.lastIndexOf('/')) +'/';

	var date_exp = new Date();

	date_exp.setTime(date_exp.getTime()+(365*24*3600*1000));

	// Ici on définit une durée de vie de 365 jours



function SetCookie (name, value) {

	var argv=SetCookie.arguments;

	var argc=SetCookie.arguments.length;

	var expires=(argc > 2) ? argv[2] : null;

	var path=(argc > 3) ? argv[3] : null;

	var domain=(argc > 4) ? argv[4] : null;

	var secure=(argc > 5) ? argv[5] : false;

	document.cookie=name+"="+escape(value)+

		((expires==null) ? "" : ("; expires="+expires.toGMTString()))+

		((path==null) ? "" : ("; path="+path))+

		((domain==null) ? "" : ("; domain="+domain))+

		((secure==true) ? "; secure" : "");

}

function getCookieVal(offset) {

	var endstr=document.cookie.indexOf (";", offset);

	if (endstr==-1)

      		endstr=document.cookie.length;

	return unescape(document.cookie.substring(offset, endstr));

}

function GetCookie (name) {

	var arg=name+"=";

	var alen=arg.length;

	var clen=document.cookie.length;

	var i=0;

	while (i<clen) {

		var j=i+alen;

		if (document.cookie.substring(i, j)==arg)

                        return getCookieVal (j);

                i=document.cookie.indexOf(" ",i)+1;

                        if (i==0) break;}

	return null;

}

/* FONCTION AFFICHAGE / CACHE DE LA LISTE DES CONNECTES */



function afficheouinon()

  {

  var elt = document.getElementById('contenu');

ouinon = GetCookie('affichage');

if(elt.style.display != "block"){				

				SetCookie("affichage", "non");

				elt.style.visibility = "visible";

				elt.style.display = "block";

								
				var jakolink = document.getElementById('clictitre');

				jakolink.innerHTML = "&nbsp;connectés&nbsp;(&nbsp;masquer&nbsp;)";

							
		}

		else {

				SetCookie("affichage", "oui");

				elt.style.visibility="hidden";

				elt.style.display = "none";																				

				var jakolink = document.getElementById('clictitre');

				jakolink.innerHTML = "&nbsp;connectés&nbsp;(&nbsp;afficher&nbsp;)";

				
		}

  }



function load_affiche()

  {

  var elt = document.getElementById('contenu');

ouinon = GetCookie('affichage');

if(ouinon != "non"){				

				elt.style.visibility = "visible";

				elt.style.display = "block";

								
				var jakolink = document.getElementById('clictitre');

				jakolink.innerHTML = "&nbsp;connectés&nbsp;(&nbsp;masquer&nbsp;)";

							
		}

		else {

				elt.style.visibility="hidden";

				elt.style.display = "none";

																				
				var jakolink = document.getElementById('clictitre');

				jakolink.innerHTML = "&nbsp;connectés&nbsp;(&nbsp;afficher&nbsp;)";

				
		}

  }

</script>

<? $aff = $HTTP_COOKIE_VARS['affichage']; ?>

<div onClick="afficheouinon();"><a href="#" id="clictitre">afficher</a></div>

<div id="contenu">nyanyanyanyanyanya</div>

<script language="JavaScript">load_affiche();</script>



</body>


Le switch entre afficher / masquer se fait bien, mais le cookie n'est pas modifié au premier clic, mais seulement au deuxieme clic.

Quelqu'un pourrait m'aider a regler ce pb svp ?
Bonsoir,

Je ne pense pas que le cross posting te donnera la solution plus rapidement. Siuis bien les conseils que je t'ai donné sur cette autre page, comme je te l'ai déjà dit, je pense que c'est parce que le cookie n'est pas enregistré immédiatement et que sa nouvelle valeur n'est disponible qu'après avoir rafraîchi la page.

Discussion identique ici :
http://www.toutjavascript.com/forums/index.php?topic=10558
ouai ba moi jtrouve pas le moyen de regler ca, donc le "cross posting" cest le meilleur moyen pour moi d'avoir une reponse ki me fass avancer.

et je preciserais que la valeur du cookie est disponible dés le deuxieme clic sur le lien, il change de "oui" en "non" (ou inversement), pas besoin de recharger la page pour verifier ca.