11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour, Je sollicite votre aide pour faire fonctionner ma fonction choisirquart. J'ai essayé pour afficher avec le console.log(oui), mais pas de résultat. Seulement ma fonction choisirsup marche et console log(ok) s'affiche. est-ce du faite que var sup est défini dans les 2 fonctions? L'objectif c'est de faire afficher une div contenant 2select lorsque les options values ont les valeurs suivantes telles qu'on peut le voir dans la fonction choisirquart

Voici mon code javascript:
function choisirquart()
{
  var sup= document.getElementById("typecategorie");
  var city= document.getElementById("villes");

  if((sup.value >=101 && sup.value <=106) && (city.value== 1))
  {
    console.log('oui');
    document.getElementById("c").style.display="block"; 

}
else{
  console.log('non');
  document.getElementById("c").style.display="none"; 

}



function choisirsup()
{
  var sup= document.getElementById("typecategorie");

  if( (sup.value >=101 && sup.value <=106) || (sup.value >=501 && sup.value <=504))
  {
    console.log('ok');
    document.getElementById("infosuperficie").style.display="block"; 

}
else{
  console.log('ko');
  document.getElementById("infosuperficie").style.display="none"; 

}


}

Auriez-vous une solution?
Modifié par max30 (14 Feb 2022 - 00:20)
Le premier else n'est pas fermé par un } (ou alors c'est la fonction elle même qui n'est pas fermée)
Modérateur
SAlut,

Alors déjà c'est la fête niveau des accolade. il en manque et ca peut tout faire foirer. Je te laisse les refermer comme il faut c'est pas trop compliqué Smiley smile

On verra ensuite s'il reste des trucs qui ne marchent pas Smiley smile


[EDIT] Ton indentation m'a fait bugué c'est "juste" la premiere fonction qui n'est pas fermée apres le else
Modifié par _laurent (14 Feb 2022 - 11:49)
essaye de faire un console.log(sup.value) pour voir un peu ce que tu as dedans, avant chaque If.
Bonjour, merci pour vos réponses. J'ai ajouté une dernière accolade à la fonction choisir quart, mais je n'ai pas obtenu de résultat. Toujours la fonction choisirsup qui marche, et pas choisirquart.

console.log(sup.value) marche
mais console.log(city.value) ne marche pas

Voici mon code source:

Le code html:


<span>  <label for="categorieannonce">Catégorie de votre annonce</label></span> <br>
                <select id="typecategorie" onchange="choisirsup()" name="categorie" required>

                <option value="" disabled selected>Catégorie</option>
                	<optgroup label ='Categorie1'> 
<option value='101'>Sou-cat1</option>
<option value='102'>Sou-cat2</option>
<option value='103'>Sou-cat3</option>
..//suite...

<div id="infosuperficie"
<span><label for= "superficie">Superficie</label></span> <br>
            <input type="number" id="superficie" name="superficie">  <br> <br>

            <span> <label for= "unite">Unité</label></span> <br>
            <input type="radio" name="unite" value="m2"> m2 <br>
<input type="radio" name="unite" value="ha">ha
<br> <br> 


</div>


<span><label for="villes">Ville</label></span> <br>
                <select id="villes" name="villes" required>
                <option value="" disabled selected>Ville</option>
              <option value='1'>Ville A</option>
<option value='2'>Ville B</option>
<option value='3'>Villes C</option>
</select>


<div id= "c" >//la div concernée, qui ne s'affiche pas à partir de la fonction choisir quart

             <span><label for="quartier">quartier</label></span> <br>
                <select onchange="choisirquart()" name="quartier">
                <option value="" disabled selected>quartier</option>
              <br />

<option value='1'>quartier1</option>
<option value='2'>quartier2</option>
<option value='3'>quartier 3</option>

</select>
<br> <br>


<span><label for="quartier">quartier2</label></span> <br>
                <select name="sousquartier">
                <option value="" disabled selected>quartier</option>
              
</select>
</div>


CSS:
#infosuperficie{
  display:none;
}
#c{
  display:none;
}



Le code côté javascript aprs avoir mis l'accolade:

function choisirquart()
{
  var sup= document.getElementById("typecategorie");
  var city= document.getElementById("villes");

  if((sup.value >=101 && sup.value <=106) && (city.value== 1))
  {
    console.log('oui');
    document.getElementById("c").style.display="block"; 

}
else{
  console.log('non');
  document.getElementById("c").style.display="none"; 

}

}



function choisirsup()
{
  var sup= document.getElementById("typecategorie");

  if( (sup.value >=101 && sup.value <=106) || (sup.value >=501 && sup.value <=504))
  {
    console.log('ok');
    document.getElementById("infosuperficie").style.display="block"; 

}
else{
  console.log('ko');
  document.getElementById("infosuperficie").style.display="none"; 

}


}

Modifié par max30 (14 Feb 2022 - 16:29)
Modérateur
Salut,

Si je synthétise un peu (beaucoup) :

#infosuperficie{
  display:none;
}
#c{
  display:none;
}

<select id="typecategorie" onchange="choisirsup()" name="categorie" required></select>

<div id="infosuperficie"></div>

<div id="c">
  <select onchange="choisirquart()" name="quartier"></select>
</div>

function choisirquart() {
  if () {
    document.getElementById("c").style.display = "block";
  } else {
    document.getElementById("c").style.display = "none";
  }
}
function choisirsup() {
  if () {
    document.getElementById("infosuperficie").style.display = "block";
  } else {
    document.getElementById("infosuperficie").style.display = "none";
  }
}

Donc ton select typecategorie fait apparaitre le infosuperficie et ton select choisirquart fait apparraitre la div C. La même div C qui est est en display none et qui contient le select qui doit la faire apparaitre Smiley biggol

PS : Indente ton code tu y verras beaucoup plus clair !
Modifié par _laurent (14 Feb 2022 - 16:46)
Meilleure solution
Ah oui, j'ai trouvé. En fait le le onchange c'est dans le select id="villes".
Voici ce que j'ai fait:

<select id="villes" onchange="choisirquart()" name="villes" required>

Et ça marche.
Merci les gars Smiley smile