Switch case

Résolu/Fermé
frugi Messages postés 53 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 26 janvier 2016 - Modifié par frugi le 7/06/2012 à 16:30
frugi Messages postés 53 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 26 janvier 2016 - 7 juin 2012 à 16:31
Bonjour,

J'ai un javascript qui me permet d'afficher un élément défini à chaque radio coché:

Javascript:

<script type="text/javascript">
<!--
function _checkSelected(obj){
   var dynamicDiv = document.getElementById("couleurDiv"); 
  
      switch( obj.nextSibling.innerHTML){
         case "T-shirt":
            var code = '<input onclick="_checkSelected(this);"  type="checkbox" id="T-shirt blanc" value="T-shirt blanc" /><label for="T-shirt blanc">T-shirt blanc</label>'
            code    += '<input onclick="_checkSelected(this);"  type="checkbox" id="T-shirt noir" value="T-shirt noir" /><label for="T-shirt noir">T-shirt noir</label>'
            break;
         case "Sweat":
            var code = '<label for="reference">Référence du modèle choisi :</label>&nbsp;<input type="text" id="reference" name="reference" value="" />';
            break; 
                    
      }
      dynamicDiv.innerHTML = code;
}
-->
</script>


HTML:

<fieldset><legend>Choix support:</legend>
      <input onclick="_checkSelected(this)" type="radio" name="choix_support" value="T-shirt" id="T-shirt" /><label for="T-shirt">T-shirt</label>&nbsp;
      <input onclick="_checkSelected(this)" type="radio" name="choix_support" value="Sweat" id="Sweat" /><label for="Sweat">Sweat</label>&nbsp;
      <div id="couleurDiv"></div>
</fieldset>


Jusqu'à là tout va bien, lorsque je coche "T-shirt", les 2 checkboxs ("T-shirt blanc" et "T-shirt noir") s'affichent, et lorsque je coche "Sweat",le champ de texte s'affiche.

Mais le problème est que j'aimerais insérer un lien sur "T-shirt" et sur "Sweat". Ce qui donnerait le code HTML suivant:

<fieldset><legend>Choix support:</legend>
      <input onclick="_checkSelected(this)" type="radio" name="choix_support" value="T-shirt" id="T-shirt" /><label for="T-shirt"><a href="www.tshirt.fr" target="_blank">T-shirt</a></label>&nbsp;
      <input onclick="_checkSelected(this)" type="radio" name="choix_support" value="Sweat" id="Sweat" /><label for="Sweat"><a href="www.sweat.fr" target="_blank">Sweat</a></label>&nbsp;
      <div id="couleurDiv"></div>
</fieldset>


En insérant ces liens, j'ai beau remplacer
switch( obj.nextSibling.innerHTML){
         case "T-shirt":

par
switch( obj.nextSibling.innerHTML){
         case "<a href="www.tshirt.fr" target="_blank">T-shirt</a>":

et
switch( obj.nextSibling.innerHTML){
         case "Sweat":

par
switch( obj.nextSibling.innerHTML){
         case "<a href="www.sweat.fr" target="_blank">Sweat</a>":


ça ne fonctionne plus, en cochant l'un ou l'autre, ça m'affiche "undefinied".

Comment faire?
A voir également:

1 réponse

frugi Messages postés 53 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 26 janvier 2016
7 juin 2012 à 16:31
En fait la réponse m'a été soufflée sur un autre forum: il suffisait de mettre des quotes ( ' ) au lieu des guillemets entourant le contenu de la case:

switch( obj.nextSibling.innerHTML){
case '<a href="www.tshirt.fr" target="_blank">T-shirt</a>':
0