2010-08-06 3 views
0

Эй, ребята У меня есть формула процента cals_in против cals_out (из 200%)балансирование шкала

я создал шкалу, чтобы показать разницу в значениях в процентном выражении. Проблема в том, что я хочу преобразовать разницу по высоте пикселей, чтобы переместить шкалу вверх или вниз

function setScalesToValue(fValue) { 

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

} 

начальное положение шкалы 183, то сравнение затем добавляется или вычитается, чтобы показать выступы на шкале. Это не работает слишком хорошо, и я ищу помощь, чтобы использовать процент возврата для перемещения шкалы

NB: значение fValue не может превышать 20 пикселей.

Любые указания будут оценены.

ответ

1

Предупреждение: я очень устал, это очень непроверено, и я редко общаюсь с javascript - так что я надеюсь, что это имеет смысл.

Суть заключается в том, чтобы определить максимальную разницу, которая полностью надавит на масштаб. Когда вы получите реальную разницу, вы увидите, какой процент от максимального значения у вас есть. Тогда вы получите только 20 процентов. Конечно, что-то более 100% вы просто исправляете до 100%, чтобы не переходить через 20 пикселей. (Я надеюсь, что этот код работает)

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

Если это неясно, вы добавите 183px в любом случае. fValue должно быть отрицательным, если разница отрицательна.

Редактировать: Похоже, я неправильно понял, как вы это реализуете, но основная идея все равно будет работать для вас. Честно говоря, если максимальное изменение калорийности составляет 200%, тогда ярлык вашего вашего fValue будет делить вашу% -ную разницу на 10 и округлить десятичную. Таким образом, 148% будут 15px, 81% - 8px и т. Д.

+0

Спасибо, что это действительно помогает мне решить проблему :) – ferronrsmith

Смежные вопросы