Slider afficher le résultat en pourcentage

Résolu
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024 - 19 nov. 2024 à 00:29
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024 - 24 nov. 2024 à 23:30

Bonsoir a tous grâce a jordan sur le forum il m a trouvé un tuto slide qui correspond à  ce que je souhaite mais j ai un souci je voudrais avoir un résultat mulitplier par 8%

j ai un slide mini 20000 maxi 1000000 lorsque je déplace le curseur j'ai bien le montant qui s affiche ce qui est très bien par contre dans la case du bas je cherche à avoir le résultat avec 8% en m'arrêtant sur 20 000 je souhaite qu il affiche 1600 etc ...

De plus j ai utilisé la fonction step pour un intervalle de 5000 mais comment faire un intervalle de 5000 jusqu a 50 000€ et intervalle de 10000 de 50000€ à 100 000€ et intervalle de 50 000€ jusqu a 1000000

voici le code et copie d ecran apres 

<p>[vc_column][/vc_column][vc_column_text css=""][/vc_column_text][vc_row][vc_column width="1/4"][/vc_column][vc_column width="1/4"][vc_raw_html css=".vc_custom_1731969255070{border-top-width: 1px !important;border-right-width: 1px !important;border-bottom-width: 1px !important;border-left-width: 1px !important;padding-top: 10px !important;padding-right: 10px !important;padding-bottom: 10px !important;padding-left: 10px !important;border-left-style: solid !important;border-right-style: solid !important;border-top-style: solid !important;border-bottom-style: solid !important;border-radius: 10px !important;border-color: #212121 !important;}"]JTNDc3Ryb25nJTNFJTNDc3BhbiUyMHN0eWxlJTNEJTIyZm9udC1zaXplJTNBJTIwMThwdCUzQiUyMiUzRSUzQ3NwYW4lMjBpZCUzRCUyMmRlbW8lMjIlM0UlM0MlMkZzcGFuJTNFJTIwJUUyJTgyJUFDJTNDc2NyaXB0JTNFJTBBdmFyJTIwc2xpZGVyJTIwJTNEJTIwZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQlMjglMjJteVJhbmdlJTIyJTI5JTNCJTBBdmFyJTIwb3V0cHV0JTIwJTNEJTIwZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQlMjglMjJkZW1vJTIyJTI5JTNCJTBBb3V0cHV0LmlubmVySFRNTCUyMCUzRCUyMHNsaWRlci52YWx1ZSUzQiUwQSUwQXNsaWRlci5vbmlucHV0JTIwJTNEJTIwZnVuY3Rpb24lMjglMjklMjAlN0IlMEElMjAlMjBvdXRwdXQuaW5uZXJIVE1MJTIwJTNEJTIwdGhpcy52YWx1ZSUzQiUwQSU3RCUwQSUzQyUyRnNjcmlwdCUzRSUzQyUyRnNwYW4lM0UlM0MlMkZzdHJvbmclM0U=[/vc_raw_html][vc_raw_html css=".vc_custom_1731969374498{border-top-width: 1px !important;border-right-width: 1px !important;border-bottom-width: 1px !important;border-left-width: 1px !important;padding-top: 10px !important;padding-right: 10px !important;padding-bottom: 10px !important;padding-left: 10px !important;border-left-style: solid !important;border-right-style: solid !important;border-top-style: solid !important;border-bottom-style: solid !important;border-radius: 10px !important;border-color: #212121 !important;}"]JTNDc3Ryb25nJTNFJTNDc3BhbiUyMHN0eWxlJTNEJTIyZm9udC1zaXplJTNBJTIwMThwdCUzQiUyMiUzRSUzQ3NwYW4lMjBpZCUzRCUyMmRlbW8lMjIlM0UlM0MlMkZzcGFuJTNFJTIwJUUyJTgyJUFDJTNDc2NyaXB0JTNFJTBBdmFyJTIwc2xpZGVyJTIwJTNEJTIwZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQlMjglMjJteVJhbmdlJTIyJTI5JTNCJTBBdmFyJTIwb3V0cHV0JTIwJTNEJTIwZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQlMjglMjJkZW1vJTIyJTI5JTNCJTBBb3V0cHV0LmlubmVySFRNTCUyMCUzRCUyMHNsaWRlci52YWx1ZSUzQiUwQSUwQXNsaWRlci5vbmlucHV0JTIwJTNEJTIwZnVuY3Rpb24lMjglMjklMjAlN0IlMEElMjAlMjBvdXRwdXQuaW5uZXJIVE1MJTIwJTNEJTIwdGhpcy52YWx1ZTIlM0IlMEElN0QlMEElM0MlMkZzY3JpcHQlM0UlM0MlMkZzcGFuJTNFJTNDJTJGc3Ryb25nJTNF[/vc_raw_html][/vc_column][vc_column width="1/4"][vc_wp_text]</p>
<style>
.slidecontainer {<br />  width: 100%;<br />}</p>
<p>.slider {<br />  -webkit-appearance: none;<br />  width: 100%;<br />  height: 15px;<br />  border-radius: 5px;<br />  background: #d3d3d3;<br />  outline: none;<br />  opacity: 0.7;<br />  -webkit-transition: .2s;<br />  transition: opacity .2s;<br />}</p>
<p>.slider:hover {<br />  opacity: 1;<br />}</p>
<p>.slider::-webkit-slider-thumb {<br />  -webkit-appearance: none;<br />  appearance: none;<br />  width: 25px;<br />  height: 25px;<br />  border-radius: 50%;<br />  background: #04AA6D;<br />  cursor: pointer;<br />}</p>
<p>.slider::-moz-range-thumb {<br />  width: 25px;<br />  height: 25px;<br />  border-radius: 50%;<br />  background: #04AA6D;<br />  cursor: pointer;<br />}<br /></style>
<div class="slidecontainer">
<p><strong><span style="font-size: 18pt;"><input id="myRange" class="slider" max="1000000" min="10000" step="5000" type="range" value="20000" /></span></strong></div>
<p>[/vc_wp_text][/vc_column][vc_column width="1/4"][/vc_column][/vc_row]</p>

et  JavaScript

var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value; // Display the default slider value

// Update the current slider value (each time you drag the slider handle)
slider.oninput = function() {
  output.innerHTML = this.value;
}

et css

.slider {
  -webkit-appearance: none;
  width: 100%;
  height: 15px;
  border-radius: 5px;  
  background: #d3d3d3;
  outline: none;
  opacity: 0.7;
  -webkit-transition: .2s;
  transition: opacity .2s;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 25px;
  height: 25px;
  border-radius: 50%; 
  background: #04AA6D;
  cursor: pointer;
}

.slider::-moz-range-thumb {
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: #04AA6D;
  cursor: pointer;
}

le but c est de faire le meme slider que ce site

https://duproprio.com/fr-ca/vendre

voila ou j en suis ma case est vierge car je ne sais pas faire la formul eavec l affiche du resultat je suis totalement novice

merci d avance a tout le monde

A voir également:

27 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
19 nov. 2024 à 06:52

Bonjour 

à l'avenir, merci d'utiliser le bouton qui permet de poster correctement ton code sur le forum.

ensuite, pour tes questions, il faut les traiter dans le code


// Update the current slider value (each time you drag the slider handle)
slider.oninput = function() {
  output.innerHTML = this.value;
  // ici, tu peux faire tes calculs et changer la valeur du step
}

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
19 nov. 2024 à 09:54

Merci Jordan c est tres gentil je vais regardé pour le step par contre peux tu juste m aider pour que la valeur du slider soit affiché avec 8% dans la case du bas qui est vide ?

merci mille fois pour ta gentillesse

0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
19 nov. 2024 à 10:47

Tu cibles le champs via son ID 

Tu y mets la valeur issue du calcul :   montantslider * 8/100

NB: Pour les champs de type "input", c'est le .value qu'il faut manipuler et non pas le .innerHTML

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
19 nov. 2024 à 11:35

Merci pour tout tes efforts helas je suis trop novice je n y arrive pas

je veux juste affiché le resultat value avec 8% dans une autre ligne si tu peux m aider je serais vraiement reconnaissant cela fait 8 jours que j essaye de trouver une solution 

<style>
.slidecontainer {<br />  width: 100%;<br />}</p>
<p>.slider {<br />  -webkit-appearance: none;<br />  width: 100%;<br />  height: 15px;<br />  border-radius: 5px;<br />  background: #d3d3d3;<br />  outline: none;<br />  opacity: 0.7;<br />  -webkit-transition: .2s;<br />  transition: opacity .2s;<br />}</p>
<p>.slider:hover {<br />  opacity: 1;<br />}</p>
<p>.slider::-webkit-slider-thumb {<br />  -webkit-appearance: none;<br />  appearance: none;<br />  width: 25px;<br />  height: 25px;<br />  border-radius: 50%;<br />  background: #04AA6D;<br />  cursor: pointer;<br />}</p>
<p>.slider::-moz-range-thumb {<br />  width: 25px;<br />  height: 25px;<br />  border-radius: 50%;<br />  background: #04AA6D;<br />  cursor: pointer;<br />}<br /></style>
<div class="slidecontainer">

<input id="myRange" class="slider" max="1000000" min="10000" step="10000" type="range" value="20000" />Value: <span id="demo"></span>

</div>
<script>
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value;

slider.oninput = function() {
  output.innerHTML = this.value;
}
</script>

var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value; // Display the default slider value

// Update the current slider value (each time you drag the slider handle)
slider.oninput = function() {
  output.innerHTML = this.value;23500;28500}

0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
19 nov. 2024 à 18:55

tu veux afficher le résultat du calcul à quel endroit ?

as-tu défini un id à la zone que tu veux remplir ?

à quel endroit, dans ton code, as-tu essayé de faire la multiplication ?

commence par poster ton code correctement en utilisant les balises de code, je verrai ce soir ou demain matin pour te répondre

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
Modifié le 19 nov. 2024 à 19:05
<style>
.slidecontainer {<br />  width: 100%;<br />}</p>
<p>.slider {<br />  -webkit-appearance: none;<br />  width: 100%;<br />  height: 15px;<br />  border-radius: 5px;<br />  background: #d3d3d3;<br />  outline: none;<br />  opacity: 0.7;<br />  -webkit-transition: .2s;<br />  transition: opacity .2s;<br />}</p>
<p>.slider:hover {<br />  opacity: 1;<br />}</p>
<p>.slider::-webkit-slider-thumb {<br />  -webkit-appearance: none;<br />  appearance: none;<br />  width: 25px;<br />  height: 25px;<br />  border-radius: 50%;<br />  background: #04AA6D;<br />  cursor: pointer;<br />}</p>
<p>.slider::-moz-range-thumb {<br />  width: 25px;<br />  height: 25px;<br />  border-radius: 50%;<br />  background: #04AA6D;<br />  cursor: pointer;<br />}<br /></style>
 
 
<div class="slidecontainer">
 
<input id="myRange" class="slider" max="1000000" min="10000" step="5000" type="range" value="20000" />Value: <span id="demo"></span>
 
</div>
<script>
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value;
 
slider.oninput = function() {
  output.innerHTML = this.value;
}
</script>
 
8% :

j ai volontairement écrit que 8% je souhaite avoir juste le résultat de 8% ici  sans rien toucher d autres

var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value; // Display the default slider value
 
// Update the current slider value (each time you drag the slider handle)
slider.oninput = function() {
  output.innerHTML = this.value;
}

 je souhaite faire le meme slide que ce site pour plus de comprehension

https://duproprio.com/fr-ca/vendre

merci jordan je suis vraiment perdu étant débutant et ce slide sera la base de mon site et j essaye pourtant de comprendre mais cela ne s invente pas

j en suis la 

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
19 nov. 2024 à 21:50

Il va falloir que tu apprennes le HTML,  le css ... et le Javascript...

Et si tu veux envoyer/sauvegarder des données en BDD, un langage serveur tel que le PHP et le SQL...

Bref, pour ta demande actuelle, ceci devrait suffir

 <style>
.slidecontainer {
  width: 100%;
}
.slider {
  -webkit-appearance: none;
  width: 100%;
  height: 15px;
  border-radius: 5px;
  background: #d3d3d3;
  outline: none;
  opacity: 0.7;
  -webkit-transition: .2s;
  transition: opacity .2s;
}
.slider:hover {
  opacity: 1;
}
.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: #04AA6D;
  cursor: pointer;
}
.slider::-moz-range-thumb {
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: #04AA6D;
  cursor: pointer;
}

/** si tu veux styliser le resultat */
#resultat{
  color:red;
  font-weight: bold;
}
</style>


<div class="slidecontainer">
  <input id="myRange" class="slider" max="1000000" min="10000" step="5000" type="range" value="20000" />
  Value: <span id="demo"></span>
 </div>
<div> 
  <span>8% :</span><span id="resultat"></span>
</div>


<!-- BALISE SCRIPT A PLACER AVANT LE </body> de ta page !! -->
<script>
  const slider = document.getElementById("myRange");
  const output = document.getElementById("demo");
  const resultat = document.getElementById("resultat");
  
  function calculPrct(){
  //Calcul du pourcentage
    let pourcentage = parseFloat(slider.value) * 8/100 ; // https://www.w3schools.com/jsref/jsref_parsefloat.asp
    resultat.innerHTML = pourcentage.toFixed(2); // https://www.w3schools.com/jsref/jsref_tofixed.asp
  }
  
  output.innerHTML = slider.value;
  calculPrct();
  
  slider.oninput = function() {
    output.innerHTML = this.value;
    calculPrct();
  } 
  
  
</script>

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 13:17

Bonjour `tous je suis toujours bloqué avec mon step variable on m a donné une piste mais impossible de le mettre en place

function getMontant(inputValue) {
  // les seuils de changement de step
  const SEUIL_1 = 5;
  const SEUIL_2 = 23;
  const SEUIL_3 = 100;  // juste pour le test mais pas obligatoire ici
 
  let montant = 0;
  for (let i = 0; i < inputValue; i += 1) {
    if (i < SEUIL_1) {
      montant += 10000;
    }
    else if (i < SEUIL_2) {
      montant += 25000;
    }
    else if (i < SEUIL_3) {
      montant += 50000;
    }
  }
  return montant;
}

et un code pour avoir l espace sur les montant 10 000 au lieu de 10000

2
3
4
5
6
7
8
9
10
11
/**
 * @param {number}   en entrée : 15000
 * @returns {string} en sortie : 15 000 €
 */
function formatMontant(valeur) {
  return new Intl.NumberFormat('fr-FR', {
    style: 'currency',
    currency: 'EUR',
    minimumFractionDigits: 0
  }).format(valeur);

ma premiere mise en page fonctionne tres bien pour une page secondaire

par contre pour la page d acceuil je souhaite avoir un curseur plus grand avec une info bulle. je ne comprends pas car sur jsbin tout s affiche normalement mais sur le site c est la cata

voici mon code actuel pour le slide qui s affiche mal

<div class="range-wrap">
    <div class="range-value" id="rangeV"></div>
   
    
 <input id="range" type="range" min="10000" max="1000000" value="20000" step="10000" >
 
</div>




<p style="text-align: center;"><strong><span style="font-size: 18pt;">Vous gagnerez </span><span id="result" style="font-size: 18pt;">1600</span><span style="font-size: 18pt;">€ * en plus pour vos autres projets</span></strong></p>

 
<script>
document.querySelector('#range').addEventListener('input',function(){ 
document.querySelector('#result').textContent =this.value*0.08 
})
</script>

input[type=range] {
  -webkit-appearance: none;
  margin: 20px 0;
  width: 100%;
}
input[type=range]:focus {
  outline: none;
}
input[type=range]::-webkit-slider-runnable-track {
  width: 100%;
  height: 4px;
  cursor: pointer;
  animate: 0.2s;
  background: #999999;
  border-radius: 25px;
}
input[type=range]::-webkit-slider-thumb {
  height: 20px;
  width: 20px;
  border-radius: 50%;
  background: #A89153;
  box-shadow: 0 0 1px 0 rgba(0,0,0, 1);
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -8px;
}
input[type=range]:focus::-webkit-slider-runnable-track {
  background: #A89153;
}
.range-wrap{
  width: 500px;
  position: relative;
}
.range-value{
  position: absolute;
  top: -230%;
}
.range-value span{
  width: 150px;
  height: 100px;
  line-height: 24px;
  text-align: center;
  background: #ffffff;
  color: #A89153;
  font-size: 25px;
  font-family: arial;
    box-shadow: 1px 1px 10px rgba(0, 0, 0);
  font-weight: bold;
  display: block;
  position: absolute;
  left: 50%;
  transform: translate(-50%, 0);
  border-radius: 6px;
}
.range-value span:before{
  content: "";
  position: absolute;
  width: 0;
  height: 0;
  border-top: 10px solid #A89153;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  top: 101%;
  left: 50%;
  margin-left: -5px;
  margin-top: -1px;
}
.text-box{
 width: 100px;
  height: 100px;
  line-height: 14px;
  text-align: center;
  color: #212121;
  font-size: 10px;
  font-family: arial;
font-weight: NORMAL;
 
  position: absolute;
  left: 50%;
  transform: translate(-50%, 0);

}

  setValue = ()=>{
    const
      newValue = Number((range.value - range.min) * 100 / (range.max - range.min) ),
      newPosition = 10 - (newValue * 0.2);
    rangeV.innerHTML = `<span><p class="text-box">PRIX DE VENTE DE VOTRE BIEN</p> <Br><Br>${range.value} €</span>`;
    rangeV.style.left = `calc(${newValue}% + (${newPosition}px))`;
 };
document.addEventListener("DOMContentLoaded", setValue);
range.addEventListener('input', setValue);




merci a tous je tourne sincerement en rond depuis tres longtemps si quelqu un peut m aider a adapter tout ça

0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
23 nov. 2024 à 19:16

Voici, en gros, à quoi pourrait ressembler le code

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <title> Diaporama  </title>
    <style>
    nput[type=range] {
  -webkit-appearance: none;
  margin: 20px 0;
  width: 100%;
}
input[type=range]:focus {
  outline: none;
}
input[type=range]::-webkit-slider-runnable-track {
  width: 100%;
  height: 4px;
  cursor: pointer;
  animate: 0.2s;
  background: #999999;
  border-radius: 25px;
}
input[type=range]::-webkit-slider-thumb {
  height: 20px;
  width: 20px;
  border-radius: 50%;
  background: #A89153;
  box-shadow: 0 0 1px 0 rgba(0,0,0, 1);
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -8px;
}
input[type=range]:focus::-webkit-slider-runnable-track {
  background: #A89153;
}
.range-wrap{
  width: 500px;
  position: relative;
}
.range-value{
  position: absolute;
  top: -230%;
}
.range-value span{
  width: 150px;
  height: 100px;
  line-height: 24px;
  text-align: center;
  background: #ffffff;
  color: #A89153;
  font-size: 25px;
  font-family: arial;
    box-shadow: 1px 1px 10px rgba(0, 0, 0);
  font-weight: bold;
  display: block;
  position: absolute;
  left: 50%;
  transform: translate(-50%, 0);
  border-radius: 6px;
}
.range-value span:before{
  content: "";
  position: absolute;
  width: 0;
  height: 0;
  border-top: 10px solid #A89153;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  top: 101%;
  left: 50%;
  margin-left: -5px;
  margin-top: -1px;
}
.text-box{
 width: 100px;
  height: 100px;
  line-height: 14px;
  text-align: center;
  color: #212121;
  font-size: 10px;
  font-family: arial;
font-weight: NORMAL;
 
  position: absolute;
  left: 50%;
  transform: translate(-50%, 0);

}

.row{
  margin-top: 150px;
  padding: 10px;
  display:inline-block;
}
    </style>
  </head>
 
<body>
<div class="row">
  <div class="range-wrap">
    <div class="range-value" id="rangeV"></div> 
    <input id="range" type="range" min="10000" max="1000000" value="20000" step="10000" >
  </div>
</div>
<div class="row">
  <p style="text-align: center;">
    <strong>
      <span style="font-size: 18pt;">Vous gagnerez </span>
      <span id="result" style="font-size: 18pt;">1600</span>
      <span style="font-size: 18pt;">€ * en plus pour vos autres projets</span>
    </strong>
  </p>
  
</div>

<script>

const range = document.querySelector('#range');
const result = document.querySelector('#result');

function caclulPrct(){
  let prct = parseFloat(range.value) * 0.8;
  result.innerHTML = prct.toFixed(2);
}

function setStep() {
  // les seuils de changement de step
  const SEUIL_1 = range.min + 50000;
  const SEUIL_2 = range.max / 2;
  const SEUIL_3 = range.max - 100000;  // juste pour le test mais pas obligatoire ici
  let step = 1;
  
  if (range.value <= SEUIL_1 ){
    step = 1000;
  }else if (range.value <= SEUIL_2 ){
    setp = 10000;
  } else if (range.value <= SEUIL_3 ) {
    step = 25000;
  } else {
    step = 75000;
  }
  
  range.step = step;
  console.log('range.value',range.value,'step',step);
}

setValue = ()=>{
    const newValue = Number((range.value - range.min) * 100 / (range.max - range.min) ),
    newPosition = 10 - (newValue * 0.2);
    rangeV.innerHTML = `<span><p class="text-box">PRIX DE VENTE DE VOTRE BIEN</p> <Br><Br>${range.value} €</span>`;
    rangeV.style.left = `calc(${newValue}% + (${newPosition}px))`;
    caclulPrct();
    setStep();
 }
 
document.addEventListener("DOMContentLoaded", setValue);
range.addEventListener('input', setValue);

</script>
  </body>
</html>

Pour ce qui est de l'affichage ( la mise en page) .. là.. il faudra poser une question propre à ce thème dans le forum CSS. ( une fois que tes soucis de Javascript) seront traités !


0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 21:06

Merci beaucoup Jordan, regarde en appliquant ton code il n y a pas de step du tout 

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 21:09

ca marche tres bien a partir de 535000 par contre pas de 535 000 avec l espace en dessous ce ne marche pas 

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 21:14

j ai trouvé il y avait step ecrit setp et pour la separation 10 000 au lieu de 10000 tu as une idée ca marche tres bien Jordan merci beaucoup et de ta comprehension 

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 21:17

le calcul des 8% est faux tu as une idée ?

0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
23 nov. 2024 à 21:50

j'avais repris ton code sans regarder..

il manque un zéro...

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 22:24

je t ennuie plus le step  pas facile pour qu il fonctionne j ai trouvé la solution en montant fixe vu que step est inferieur range.value <= SEUIL_3 et la les trois classe fonctionne mais je ne comprends pas exemple au dessus de 500 000 il attends qu on passe a 510 000 pour ajouter les 50 000 de plus donc 560,... 610 et en buter je n ai pas la possiiblité d aller au bout du slide et d afficher le resultat pour 1 000 000

pareil valeur max 50000 avec step de 10000 et va jusqu a 60000 avec le step de 10 000 j ai essayer de descendre en dessous les valeur mais rien a y faire j ai cet ecart de 10000 donc  

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 22:30

c est le step jusqu a 50 000 qui deconne au lieu de changer de valeur a partir de 50000 il change qu a partir de 60 000 donc 50 000 + (10000 step1)autre variable changement a 60000  j ai essayer inferieur a 49500 etc ... donc en bout de chaine toujours les plus 10000 qui font du 510k 560k 610k etc

0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
23 nov. 2024 à 23:40

remplace les<=  par des <

detailles également le nombre de seuils que tu veux.. il en manque peut-être un..

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 23:28

j ai repris ton code aucun step avant 500 000  donc tout les 1 mais surtout le seul step qui fonctionne c est celui a 25000 et il commence qu a 510000 donc il y a une histoire de 10000 quelque part

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 23:46

si je met = le slide est bloqué

 on m avait dit sinon de faire avec array mais la trop compliqué pour moi mais ca deternine les valeurs fixe

input avec des valeurs  autres :

<input id="myRange" class="slider" max="33" min="1" type="range" value="10">
const montant = [
  10,
  20,
  30,
  40,
  50,
  75,
  100,
  125,
  150,
  175,
  200,
  225,
  250,
  275,
  300,
  325,
  350,
  375,
  400,
  425,
  450,
  475,
  500,
  550,
  600,
  650,
  700,
  750,
  800,
  850,
  900,
  950,
  1000
];

et une fonction de recuperation

function getMontant(inputValue) {
  return montant[inputValue - 1] * 1000;
}

mais impossible a comprendre et mettre en place 

correspondance entre la valeur du range, de 1 à 33, et le montant, de 10000 à 1000000, ce qui donne
Range	Montant
1	10 000 €
2	20 000 €
3	30 000 €
4	40 000 €
5	50 000 €
6	75 000 €
7	100 000 €
8	125 000 €
9	150 000 €
10	175 000 €
11	200 000 €
12	225 000 €
13	250 000 €
14	275 000 €
15	300 000 €
16	325 000 €
17	350 000 €
18	375 000 €
19	400 000 €
20	425 000 €
21	450 000 €
22	475 000 €
23	500 000 €
24	550 000 €
25	600 000 €
26	650 000 €
27	700 000 €
28	750 000 €
29	800 000 €
30	850 000 €
31	900 000 €
32	950 000 €
33	1 000 000 €
0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
23 nov. 2024 à 23:50

avec array ca commence a zero pas grave si ca fonctionne et si on peu pour l affichage value:20000

0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
24 nov. 2024 à 00:15

je n'ai pas dot de mettre des = ... mais des < 

maintenant, peux tu simplement nous indiquer quels seuils tu veux et quel step tu souhaites y associer ? 

moi j'ai pris des valeurs au pif ne sachant pas ce que tu voulais...

au passage,. j'espère que tu  comprends le code que je t'ai donné... sinon tu ne pourras jamais l'adapter à tes besoins vu, il me semble, ton manque de connaissances dans le langage js.


0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
24 nov. 2024 à 00:55

c est compliqué mais a passer autant de temps dessus ca a l avantage d en apprendre pas mal mais pas assez pour avoir le slide j y suis dessus depuis plus de 2 semaines et j y passe bcp d heure par jour mais je bloque toujours

je cherche a avoir tous les 10 000 sur cette tranche
10000 20000 30000 40000 jusqu a 50000

tous les 25 000 sur cette tranche
de 50000 75000 100000 125000 150000 175000 200000 225000 250000 275000 300000 325000 350000 375000 400000 425000 450000 475000 500000

tous les 50 000 sur cette tranche
550000 600000 650000 700000 750000 800000 850000 900000 950000 1000000

0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
24 nov. 2024 à 10:20

Donc, pour le step, ça devrait donner ça :

function setStep() {

  let step = range.step;
  
  if (range.value < 50000 ){
    step = 10000 ; // 10 000  jusqu'a 50000 (exclus)
  }else if (range.value <= 500000 ){
    step = 25000; // 25 000  de 50000 jusqu'a 500000 (inclus)
  } else {
    step = 500000; // 50000 au dela des 500000
  }
  
  range.step = step;
  console.log('range.value',range.value,'step',step); // N'hésites pas à ouvrir la console JS de ton navigateur pour voir ce qui s'y affiche
}
0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
24 nov. 2024 à 10:41

merci jordan le code bloque a 510000 pas possible d aller plus loin dans le step et toujours cette histoire de 10000. car il devrait s arreter a 500000 pour finir a 1000000 avec des valeurs comprehensible par tranche de 50000

tu en penses quoi du code array ? ca peut se mettre en place ? car si on ecrit directement les valeur ca peut etre plus simple peut pas cette erreur de 10000?

merci encore

0
JE6478 Messages postés 34 Date d'inscription vendredi 14 janvier 2022 Statut Membre Dernière intervention 30 novembre 2024
24 nov. 2024 à 10:45

le step de 10000 change qu a partir de 60000 au lieu de 50000 donc apres step de 250000 donc 60k 85k 110k 135k etc au lieu de 50k 75k 100k 125k  donc il va a cause des 10000 a 60000 a 510 000 au lieu de 500 000 et apres le step de + de 500000 ne fonctionne pas bloquant le slide

0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
24 nov. 2024 à 13:37

Le problème, c'est qu'avec les step que tu veux.. quand ton range arrive à 485000 .. ben le step d'après c'est 510000 ( 485000 + 25000)

pour pouvoir passer par la case 500000.. il faudrait qu'a 485000 le step devienne 15000 ... mais ce n'est pas ce que tu m'as demandé...

Pour le blocage au dela des 510000 .. regarde la valeur du step que j'ai mis .. en effet, il faudrait que 50 000 au lieu de 500 000 .. non ? (preuve que tu n'as pas relu le code que je t'ai écrit de tête sans le tester... )

Mais là encore, tu vas avoir un blocage ... tu risques d'être bloqué à 960000

Bref,

Changeons de methode...

Plutot que d'utiliser les STEPs on va directement lui indiquer les valeurs qui sont autorisées

par exemple

const range = document.querySelector('#range');
const result = document.querySelector('#result');


// Liste des valeurs autorisées
const allowedValues = [
    10000, 20000, 30000, 40000, 50000, 75000, 100000, 125000, 150000, 
    175000, 200000, 225000, 250000, 275000, 300000, 325000, 350000, 
    375000, 400000, 425000, 450000, 475000, 500000, 550000, 600000, 
    650000, 700000, 750000, 800000, 850000, 900000, 950000, 1000000
];

function caclulPrct(){
  let prct = parseFloat(range.value) * 0.08;
  result.innerHTML = prct.toFixed(2);
}



setValue = ()=>{
    const newValue = Number((range.value - range.min) * 100 / (range.max - range.min) );
    newPosition = 10 - (newValue * 0.2);
    
    range.step = 10000;
    let currentValue = parseInt(range.value);
    console.log('currentValue', currentValue);
    // Vérifier si la valeur est autorisée
    if (!allowedValues.includes(currentValue)) {
        // Trouver la valeur la plus proche dans la liste autorisée
        let closestValue = allowedValues.reduce((prev, curr) => {
            return (Math.abs(curr - currentValue) < Math.abs(prev - currentValue) ? curr : prev);
        });

        // Mettre à jour la valeur de l'input avec la valeur la plus proche
        range.value = closestValue;
        console.log('closestValue', closestValue);
        currentValue = closestValue;
    } 
    console.log('range.value',range.value); // N'hésites pas à ouvrir la console JS de ton navigateur pour voir ce qui s'y affiche
    rangeV.innerHTML = `<span><p class="">PRIX DE VENTE DE VOTRE BIEN</p> <Br><Br>${currentValue} ?</span>`;
    rangeV.style.left = `calc(${newValue}% + (${newPosition}px))`;
    caclulPrct();

 }
 
document.addEventListener("DOMContentLoaded", setValue);
range.addEventListener('input', setValue);
0