recherche

Maison  >  Questions et réponses  >  le corps du texte

Calculez le prix total à différents pourcentages pour chaque incrément

J'essaie d'écrire une calculatrice pour l'estimation des prix

J'aime ça :

Le prix pour 1000 MTU sera de 0,035 donc le total deviendra 35 Le prix MTU de 2000 sera de 0,034, le total deviendra 67 Le prix pour 3000 MTU sera de 0,0329 et le total deviendra 98,79

Attendez...

J'ai écrit le code suivant mais il donne une erreur NaN.

Toute nouvelle suggestion pour écrire du code efficace serait grandement appréciée.

<p id= "rangeValue" >

</p>
<div class="range-wrap">
        <div class="range-value" id="rangeV"></div>
<input id="myinput" type="range" name="points" min="1000" max="100000" value="1000" oninput="rangeValue.innerText = this.value" >
</div>
const slider = document.getElementById("myinput")
const min = slider.min
const max = slider.max
const value = slider.value

slider.style.background = `linear-gradient(to right, #0080FF 0%, #0080FF ${(value-min)/(max-min)*100}%, #596680 ${(value-min)/(max-min)*100}%, #596680 100%)`

slider.oninput = function() {
  this.style.background = `linear-gradient(to right, #0080FF 0%, #0080FF ${(this.value-this.min)/(this.max-this.min)*100}%, #596680 ${(this.value-this.min)/(this.max-this.min)*100}%, #596680 100%)`
};


// Add a change event listener to the range slider
   slider.addEventListener('change', function() {
  // Get the value of the range slider
  var value = this.value;
  var container = document.querySelector('#rangeValue');
  
  let cost;
  function calculateCost(value) {
  if (value === 1000) {
    cost = 0.0350;
  } else if (value === 2000) {
    cost = 0.0340;
  } else {
    cost = 0;
  }
  return cost;
}
var totval=value * cost;
totval = totval.toFixed(2);
  
  container.innerHTML = totval;
  // Print the value to the console
 // console.log(value);
});

const
    range = document.getElementById('myinput'),
    rangeV = document.getElementById('rangeV'),
    setValue = ()=>{
        const
            newValue = Number( (range.value - range.min) * 100 / (range.max - range.min) ),
            newPosition = 10 - (newValue * 0.2);
        rangeV.innerHTML = `<span>${range.value}</span>`;
        rangeV.style.left = `calc(${newValue}% + (${newPosition}px))`;
    };
document.addEventListener("DOMContentLoaded", setValue);
range.addEventListener('input', setValue);
#myinput {
  border-radius: 8px;
  height: 8px;
  width: 100%;
  outline: none;
  -webkit-appearance: none;
}

input[type='range']::-webkit-slider-thumb {

  -webkit-appearance: none;
   width: 20px;
  height: 20px;
  border-radius: 50%;
   background: #0080FF;
}


.range-wrap{
    width: 500px;
    position: relative;
}
.range-value{
    position: absolute;
    top: 150%;
}
.range-value span{
    width: 30px;
    height: 24px;
    line-height: 24px;
    text-align: center;
    background: transparent;
    color: #0A0E1C;
    font-size: 20px;
    display: block;
    position: absolute;
    left: 50%;
    transform: translate(-50%, 0);
    border-radius: 6px;
}
.range-value span:before{
    content: "";
    position: absolute;
    width: 0;
    height: 0;
    top: 100%;
    left: 50%;
    margin-left: -5px;
    margin-top: -1px;
}```

P粉539055526P粉539055526229 Il y a quelques jours419

répondre à tous(1)je répondrai

  • P粉459440991

    P粉4594409912024-04-03 20:11:37

    Utilisez parseInt()输入值字符串转换为整数 pour pouvoir calculer le prix. Au-delà de ça, vous avez utilisé une fonction dans l'écouteur d'événement calculateCost(), j'ai corrigé ça dans le code, voici donc le résultat :

    const slider = document.getElementById("myinput")
    const min = parseInt(slider.min)
    const max = parseInt(slider.max)
    const value = parseInt(slider.value)
    
    slider.style.background = `linear-gradient(to right, #0080FF 0%, #0080FF ${(value-min)/(max-min)*100}%, #596680 ${(value-min)/(max-min)*100}%, #596680 100%)`
    
    slider.oninput = function() {
      this.style.background = `linear-gradient(to right, #0080FF 0%, #0080FF ${(this.value-this.min)/(this.max-this.min)*100}%, #596680 ${(this.value-this.min)/(this.max-this.min)*100}%, #596680 100%)`
    };
    
    
    // Add a change event listener to the range slider
    slider.addEventListener('change', function() {
      // Get the value of the range slider
      var value = parseInt(this.value);
      var container = document.querySelector('#rangeValue');
    
      let cost;
        if (value === 1000) {
          cost = 0.0350;
        } else if (value === 2000) {
          cost = 0.0340;
        } else {
          cost = 0;
        }
      var totval=value * cost;
      totval = totval.toFixed(2);
    
      container.innerHTML = totval;
      // Print the value to the console
      // console.log(value);
    });
    
    const
        range = document.getElementById('myinput'),
        rangeV = document.getElementById('rangeV'),
        setValue = ()=>{
            const
                newValue = Number( (range.value - range.min) * 100 / (range.max - range.min) ),
                newPosition = 10 - (newValue * 0.2);
            rangeV.innerHTML = `${range.value}`;
            rangeV.style.left = `calc(${newValue}% + (${newPosition}px))`;
        };
    document.addEventListener("DOMContentLoaded", setValue);
    range.addEventListener('input', setValue);
    #myinput {
      border-radius: 8px;
      height: 8px;
      width: 100%;
      outline: none;
      -webkit-appearance: none;
    }
    
    input[type='range']::-webkit-slider-thumb {
    
      -webkit-appearance: none;
       width: 20px;
      height: 20px;
      border-radius: 50%;
       background: #0080FF;
    }
    
    
    .range-wrap{
        width: 500px;
        position: relative;
    }
    .range-value{
        position: absolute;
        top: 150%;
    }
    .range-value span{
        width: 30px;
        height: 24px;
        line-height: 24px;
        text-align: center;
        background: transparent;
        color: #0A0E1C;
        font-size: 20px;
        display: block;
        position: absolute;
        left: 50%;
        transform: translate(-50%, 0);
        border-radius: 6px;
    }
    .range-value span:before{
        content: "";
        position: absolute;
        width: 0;
        height: 0;
        top: 100%;
        left: 50%;
        margin-left: -5px;
        margin-top: -1px;
    }

    répondre
    0
  • Annulerrépondre