2010-08-06 4 views
0

Hey les gars, j'ai une formule le pourcentage de cals_in vs cals_out (de 200%)équilibre une échelle

i créé une échelle pour montrer la différence entre les valeurs en termes de pourcentage. Le problème est que je veux convertir la différence en termes de pixels hauteur pour se déplacer vers le haut de l'échelle ou vers le bas

function setScalesToValue(fValue) { 

    document.getElementById("cals_in").style.bottom = (183 + fValue) + "px"; 
    document.getElementById("cals_out").style.bottom = (183 - fValue) + "px"; 

} 

La position de l'échelle initiale est de 183, alors la comparaison est ensuite ajouté ou soustrait pour montrer les projections sur l'échelle. Cela ne fonctionne pas très bien et je cherche l'aide de quelqu'un pour utiliser le pourcentage de retour pour déplacer l'échelle

NB: la valeur f ne peut pas être supérieure à 20px.

Toute direction sera appréciée.

Répondre

1

Attention: Je suis très fatigué, ce n'est pas testé, et je joue rarement avec javascript - donc j'espère que cela a du sens.

Le point est de décider de la différence maximale qui va pousser l'échelle tout le chemin. Quand vous voyez la vraie différence, vous voyez quel pourcentage du maximum vous avez. Ensuite, vous obtenez juste ce pourcentage de 20 pixels. Bien sûr, tout ce qui est supérieur à 100%, vous le corrigez à 100%, donc vous ne dépassez pas 20 pixels. (J'espère que ce code fonctionne)

var difference; 
var max_expected_difference; 
var diff_percent; 
var fValue; 

diff_percent = difference/max_expected_difference; 
diff_percent = Math.round(diff_percent*100)/100; 

if (diff_percent>1) diff_percent = 1; 
if (diff_percent

Dans le cas où cela n'est pas clair, vous ajouterez à la 183px dans les deux cas. La valeur f devrait être négative si la différence est négative. Edit: Il semble que j'ai mal compris comment vous implémentez cela, mais l'idée de base fonctionnera toujours bien pour vous. Honnêtement, si votre changement de calories maximum est de 200% alors un raccourci vers votre fValue est de diviser votre différence en% par 10 et arrondir la décimale. Donc, 148% serait 15px, 81% serait 8px, etc ...

+0

Merci l'homme cela m'aide vraiment à résoudre le problème :) – ferronrsmith

Questions connexes