[javascript] pkoi mon script marche pas ?

Salut à tous,
J’ai fait un script qui … enfin j’aimerai qu’il … affiche coucou si on clique sur un bouton radio mais voila ca fait pas coucou, pourquoi ???

Voici le code de ma page html avec son script :


<html>
  <head>
  <title></title>
  </head>
  <body>


<form name="general">	
	
	pas coucou <input type="radio" name="repartit" value="repartit"> <br />
	coucou <input type="radio" name="repartit" value="non_repartit"> <br />
	

<script language="javascript">
        if (general.repartit[1].checked){
        document.write("coucou");
        }
</script>

</form>


  </body>
</html>

merci…

c’est document.general.(…)

j’ai essayé ce que tu m’a dit mais ca marche pas, et en plus ce n’est pas tres précis donc je suis pas sur que ce que j’ai changé soit comme tu m’a dit:

document.general.write("coucou");

ca marche pas

Normal. Regarde l’ordre d’exécution de ta page.

Tu affiches 2 contrôle Checkbox non cochés par défaut.
Ensuite directement tu demandes si l’un est affiché, d’écrire un texte.
Il n’y a rien de dynamique sur ta page. Elle ne répond à aucune action.
Ton script ne fait que tester une et une seule fois l’état de ta Checkbox. Plus précisement, au moment où le navigateur arrive à l’exécution du script, càd après l’affichage des Checkbox.

Pour le vérifier coche par déffaut une case et teste sa valeur dans ton script.

Pour avoir un effet dynamique il faut que tes contrôles appellent une fonction Javascript que tu auras écrite pour répondre à l’événement onclick du contrôle.

dans le test, document.general.
Sinon la remarque d’oxy est plus que pertinante.

Moi je ferais plutôt quelque chose comme ceci…

<html>
	<head>
  <title>Test</title>
  <script type="text/javascript">
  	function showMsg()
  	{
    alert('Coucou');
  	}
  	
  	function initRepartit()
  	{
    var Repartit = document.getElementById('repartit');
    Repartit.onclick = showMsg;
  	}
  </script>
	</head>
	<body onload="initRepartit();">
  <form action="lapagedaction">
  	<p><label for="repartit">pas coucou</label> <input type="radio" id="repartit" name="repartit" value="repartit"></p>
  	<p><label for="non_repartit">coucou</label> <input type="radio" id="non_repartit" name="repartit"  value="non_repartit"></p>
  </form>
	</body>
</html>

Autre chose, si tu n’as pas besoin que les données du formulaire soit envoyées à une page, ne mets pas la balise <form> :wink: Les raccourcis du style document.general & co, spa vraiment le top, c’est surtout dû à l’époque où aucun standard n’était réellement implémenté.

Le probleme c’est que je voudrais que ca s’affiche en texte sous mon formulaire, car le but au final serait que si on clique sur le bon bouton radio ca ajoute des formulaire text.

Ah chuis trop stylé j’ai résolu mon probleme tout seul avec :


<html>
<head>
 <title>Test</title>

</head>
<body>
 <form name="t">
  <p><label for="repartit">pas coucou</label> <input type="radio" id="repartit" name="repartit" value="repartit" onClick=document.forms["t"].elements["text"].type="hidden" checked></p>
  <p><label for="non_repartit">coucou</label> <input type="radio" id="non_repartit" name="repartit"  value="non_repartit" onClick=document.forms["t"].elements["text"].type="text"></p>
 <input type="hidden" name="text">
 </form>
</body>
</html>

Ah je suis fier de moi

Mais en fait j’ai un probleme ceci fonctionne sous firefox mais pas sous ie 6 car j’ai l’impression qu’on ne peux pas changer le type d’un input avec ie, alors je fais comment pour cacher mon champ sous ie ? en temps normal c autorisé et ie abuse ???

c légèrement bourrin qd meme de caché un champ en changeant son type
fait ça en css, etu tu dois pouvoir gérer ça avec le js :
document.tonform.tonchamp.style.display=‘none’;
ou un truc dans le genre

Oublie les champs cachés pout le visu de ta page: modifier un champ caché ne devrait te servir qu’à renvoyer des infos cachées dans un POST.
on a pas mal bidouliié du Javascript dans ce Thread:
http://www.clubic.com/forum/index.php?showtopic=290499&hl=

Je me pertmet d’indiqur ma méthode pour modifier dynamiquement le contenu de la page


<script>

function showinfo(){
 var info1=document.getElementById("info1")
 info1.innerHTML="un texte modifié";
}
</script>
<div id="info1">N/A</div>
<form name="form1">
<input type=button value="click" onclick="showinfo()"/></form>


L’asctuce c’est donc de donner un id à un élément HTML, d’y accéder en js et de modifier son attribut innerhtml.
petite remarque sur les autres listings: je préfère indiquer mon onclick sur l’élement concerné plutôt que d’y accer en javascript(moins lisible)
:slight_smile:

Pour ma part je déclare les évènements à part, dans le code javascript… Je préfère avoir une séparation claire entre le HTML (structure), le CSS (présentation), et le Javascript (interactivité) :wink:

Au passage, je réitère la chose mais normalement les id (attributs id) ne sont pas censés contenir de “_” mais des “-” à la place (c’est à cause des CSS tout ça)

Oui, ça ce défend, pour moi c’est 2 écoles, j’ai sans doute trop l’habitude de la programmation RAD (du Domino dans mon cas): on clique, et la méthode appelée s’affiche.
Maintenant la séparation IHM-code est indispensable, et ta méthode permet de l’imposer à toute une équipe de dev, mais il peut y avoir d’autres méthodes :wink:

En CSS2 c’est désormais autorisé… Cependant certains navigateurs uniquement compatibles CSS1 peuvent ne pas aimer, effectivement :wink:

http://www.w3.org/Style/css2-updates/REC-C…512-errata.html

Yep. Vaut donc mieux l’éviter (c’est moche en plus).

(je sais pas pourquoi, pourtant je suis adepte du _ en C, php, javascript (je devrais éviter là), etc, mais je trouve ça moche en html… va savoir)

À vrai dire… c’est une question de style, c’est sûr… Parfois j’vais en foutre à toutes les sauces dans mon PHP, et parfois je vais totalement éviter :smiley:

Ceci dit en HTML/CSS, je suis d’accord que le “-” est plus joli :wink: