2016-07-24 23 views
-2

Ich habe diese Fortschrittsbalken in JS und ich Fortschritte mit diesem Code durch eine Erhöhung der Breite füllt:Logik Javascript erhalten Prozentsatz jeder Zahl zwischen zwei Zahlen

function move(ValueSC) { 
    var elem = document.getElementById("scaleOrig"); 
    var width = 0; 
    var internalVlue = ValueSC; 
    var id = setInterval(frame(internalVlue), 50); 
    function frame(internalVlue) { 
     if (width >= internalVlue) { 
      clearInterval(id); 
     } else { 
      width += internalVlue; 
      elem.style.width = width + '%'; 
     } 
    } 
} 

Das funktioniert perfekt, aber das Problem ist, dass Ich werde einen Wert (Ergebnis) von meinem Taschenrechner erhalten, der zwischen den Zahlen 15 bis 40 liegt, also werden 15% 0 und 40 100% sein. Ich möchte die Breite des Fortschrittsbalkens auf 100 Prozent erhöhen, wenn das Ergebnis (von meinem Taschenrechner) 40 ist und wenn es 15 ist, sollte der Wert des Fortschrittsbalkens 0% sein. Grundsätzlich brauche ich die Logik, um alle 25 Zahlen von 15 bis 40 zu konvertieren, um einen Prozentwert zwischen 0 und 100% zu haben.

+0

auf eine Zahl zu erhöhen, sollte Prozentsatz um 4% steigen –

+0

@RahulArora Ja, das ist richtig –

+1

Also, was Wert, den Sie erhalten, die Sie gerade diese Logik anwenden müssen, (Wert-15) * 4 und wenn ich nicht falsch bin, sollte dies die Breite –

Antwort

-2

Bevor Sie Ihre Methode aufrufen, dies tun:

ValueSC= ((Max-Min)/100)*(Current-Min)) 

Wo: Aktuell: Ihr Wert Min = Minimalwert Max = Max Value

1

Als breitere Antwort, die Formel du bist Suche nach ist ((value - min)/(max - min)) * 100. max und min sind die Grenzen Ihres Wertes und value ist der aktuelle Fortschritt. Dies gibt den Prozentsatz des bisherigen Fortschritts für einen gegebenen Wert zwischen zwei anderen Werten zurück.

-2

Zuerst müssen Sie 100 in kleinere Schritte aufteilen. Es kann bis zu 25 (40-15) unterschiedliche Werte für die Zahl sein, so dass die Länge eines Schrittes sollte 100/25 sein, und Ihre Startnummer ist 15. So etwas wie dies funktionieren soll:

function getPercentage(number) { 
    return (number - 15) * (100/25); 
} 
+1

Die Rückkehr sollte wie folgt sein 'return ((number - 15)/(40 - 15)) * 100' – DannyFeliz

+0

Diese sind äquivalent, aber Sie haben Recht, das wäre der verständlichste Rückflussausdruck (so wie Hydrothermal schrieb). – user3076373

0
var percent = ((value - 15)/(40 - 15)) * 100 

40 geben Ihnen 100 und 15 geben Ihnen 0