11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,
J'ai un script qui me permet de montrer et cacher un div, mais qui malheureusement ne marche plus (à cause d'une mauvaise manipulation de ma part je pense - suite à une indentation j'ai supprimé des <div> ou </div> si ma mémoire est bonne).
J'ai cherché un long moment, et je ne vois pas ce qui pourrait empeché mon script de fonctionnait. Merci de votre aide ! Smiley smile
ps : Comme vous pouvez le voir dans le code, j'ai testé d'appellé le JS de deux manière differentes (avec onClick et sans) mais les deux ne marches pas.
De plus avec le class="cachediv" du CSS, normalement les block devrait etre caché à l'ouverture de la page, or ils sont tous visible ...
Voici le code :
Voici ce qui se trouve entre les balises <head> :
<style type="text/css" media="all"> 			
.cachediv {
visibility: hidden;
overflow: hidden;
height: 1px;
margin-top: -1px;
position: absolute;
}
</style>



<script type="text/javascript">
			     /*
			     * Montre / Cache un div
			     */
			  function DivStatus( nom, numero ) {
            			 var divID = nom + numero;
            			 if ( document.getElementById && document.getElementById( divID ) ) {// Pour les navigateurs récents
                 			 Pdiv = document.getElementById( divID );
                 			 PcH = true;
                		  }
             			else if ( document.all && document.all[ divID ] ) {// Pour les veilles versions
                 			Pdiv = document.all[ divID ];
                 			PcH = true;
                 		}
             			else if ( document.layers && document.layers[ divID ] ) {// Pour les très veilles versions
                 			Pdiv = document.layers[ divID ];
                     			PcH = true;
                 		}
             			else{
					PcH = false;
                		 }
             			if ( PcH ){
                    			 Pdiv.className = ( Pdiv.className == 'cachediv' ) ? '' : 'cachediv';
                 		}
         		}
			</script>


Et maintenant, entre les balises <body> :

<ul id="menugerer">
      					<li><a href="#">News</a>
               					<ul class="sousmenu">
                        				<li><a href="#" onclick="javascript:DivStatus( 'ajoutnews', '1' )">Creer News</a></li>
                        				<li><a href="javascript:DivStatus( 'supprnews', '1' )">Supprimer News</a></li>
                				</ul>
        				</li>
</ul>

<div name="ajoutnews1" id="ajoutnews1" class="cachediv">
		<form method="post" action="">
			<label>Date : <input type="text" name="date" ></label>
			<label>News : <textarea name="texte" rows="5" cols="75" ></textarea></label>
			<input type="submit" name="submit" value=" Envoyer ">
		</form>
</div>


Merci de votre aide. Smiley smile
Modifié par Fer2Lance (02 Dec 2010 - 14:29)
Le texte ne capte pas le CSS et le javascript qui se situe entre les balises <head>. Y a t'il besoin de l'appellé d'une manière spéciale ?
Aucune réponse ? J'en conclus qu'il n'y a aucune erreur mais que ca ne marche pas donc ... Smiley lol
Le problème c'est qu'à la base ça marchait ! Smiley sweatdrop
Salut Fer2Lance,

Ben chez moi le premier lien fonctionne bien. Le 2ème ne risque pas de marcher puisque le div qui a pour id "supprnews" n'existe pas...
Salut hchtot, et merci pour ta réponse.
Oui je sais bien que supprnews n'existe pas, j'ai coupé le code qui est beaucoup plus long, tout comme le menu qui est beaucoup plus long. J'avais juste laissé supprnews pour montrer que j'avais essayé de deux manières différentes.
C'est bizarre que ca marche chez toi, chez moi ca ne marche pas !
Il doit y avoir une erreur autre part alors ... en tout les cas merci de ta réponse. Smiley smile
Tu testes sous quel navigateur ? J'ai testé sous IE8, firefox 3.6, chrome... et ça fonctionne bien. T'as bien activé javascript sur ton navigateur au moins ?
Sinon pour ce genre de truc c'est pas mal d'utiliser Jquery. Y'a moins de code et t'es sûr que ça passe partout !
Merci bien de ton aide. Smiley smile
J'ai testé sur IE8 et Firefox et sur deux bécanes différentes.
Je me demande si le problème ne vient pas de
<?php
include('mysqlconn.php');
?>

qui se situe au dessus du doctype ...
C'est en ligne ton truc ? T'as pas un lien ? Ou alors donne l'intégralité de ton code parce que là, c'est difficile de voir ce qui cloche...