Modifier la valeur "min" d'une input range avec une variable

TR_2000 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
 DoctorHow -
Bonjour,

Voici une partie de mon code HTML :

<div class="slidecontainer">
                <input type="range" min="freq_0" max=200 value="50" class="slider" id="slider_frequency">
                <p>Center Frequency : <span id="center_frequency"></span></p>
            </div>
   
        </section>
        <div class="after_axis">
            <br>
            <input type="button" onclick="javascript:SelectZoom()" value="Zoom"></button>
            <script>
                // Affichage Initial
                	var nb_freq = 9;
                    var center_frequency = 2.4e3
                    var bandwidth = 2
                    var frequency = new Array(nb_freq);
                    
                    frequency[0] = center_frequency-bandwidth/(2);
                    pas = bandwidth/(nb_freq-1);                        

                    for(let i = 0; i<nb_freq; i++){
                        frequency[i] = frequency[0] + pas*i;
                        document.getElementById("freq_"+i).innerHTML=frequency[i];
                    } 
                // Slider frequences
                    var slider = document.getElementById("slider_frequency");
                    var output = document.getElementById("center_frequency");
                    output.innerHTML = slider.value;
                    
                    slider.oninput = function(){
                    output.innerHTML = this.value;
                    }
            </script>


Je cherche à attribuer aux valeur min et max de mon slider les variables frequency[0] et frequency[8]. Ces variables sont modifiées au cours du temps et ainsi, mon slider pourra lui aussi évoluer en fonction.

Merci pour votre aide,

2 réponses

  1. patricia@84 Messages postés 114 Statut Membre 9
     
    Bonjour,

    Pour attribuer des variables à vos valeurs, qui, je pense, sont celles de votre ligne 2, il faudrait que ces valeurs soient récupérées sous forme de variables $frequency[0] et $frequency[8] avant cette ligne et non après.

    Il faut ensuite insérer vos variables. Si je devais coder en php, cela donnerait quelque chose comme cela :
    <?php
    echo '<input type="range" min="'.$frequency[0.'" max="'.$frequency[8].'" class="slider" id="slider_frequency">';
    ?>

    en supprimant le "value".

    Patricia
    1
    1. TR_2000 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   1
       
      D'accord je vais essayer merci !
      0
  2. DoctorHow
     
    Salut,
    en JavaScript:

    monInputFrequency.setAttribute('min', valeurNumerique)
    

    je n'ai pas compris ceci:
    min="freq_0"
    freq_0 n'est pas une valeur numérique et ne correspond à rien(sauf une erreur).

    Quant au recours à PHP il est nécessaire si les min et max viennent d'une base de données mais à éviter si c'est calculé dans le JavaScript.
    Si cela vient d'une base de données le plus simple est simple de le faire avec un echo

    <?php
    echo ("<input ype=range min=".$valueMin." max=".$valueMax." value=.$value." >")
    ?>
    éventuellement dans une boucle comme disait patricia@84 si les données récupérées sont tabulaires(et l'écriture des input dans la boucle).

    Mieux aussi de rajouter l'attribut name pour un input.
    Voir aussi la balise <label> qui est nécessaire pour les input.
    A noter aussi qu'un input est un élément qui doit se trouver dans un formulaire(balise <form>).
    Cela peut fonctionner sans mais c'est nettement moins bien à de nombreux égards.

    Exemple de ce qui doit être fait(avec form et label):

    https://www.w3schools.com/w3css/w3css_input.asp
    0