Как сделать логарифмическую шкалу для ionRangeSlider с контролируемым значением в центре шкалы? Просто с логарифмической шкалой разобралсяmin: 100000,
max: 100000000,
...
prettify: function (value) {
var position = Math.floor(value / this.max * 100);
var minPos = 0,
maxPos = 100;
var minLog = Math.log(this.min),
maxLog = Math.log(this.max);
// calculate adjustment factor
var scale = (maxLog - minLog) / (maxPos - minPos);
// round numbers
var n = Math.floor(Math.exp(minLog + scale * (position - minPos)));
var n = Math.log(value) / Math.log(100);
console.log(n)
return Math.floor(n / 100000) * 100000;
},
onStart: function (data) {
$("input[name=object_price]").val(data.from + " руб");
},
onChange: function (data) {
$("input[name=object_price]").val(this.prettify(data.from) + " руб");
},
Но на 50% получаем 3.2млн. А нужно 5млн. Как сделать сдвиг?

21 Авг 2019 в 06:03
160 +1
0
Ответы
1

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

Вы можете изменить вашу функцию prettify следующим образом, чтобы добавить смещение:

prettify: function (value) {
var position = Math.log(value) / Math.log(this.max) * 100;
var minPos = 0,
maxPos = 100;
var minLog = Math.log(this.min),
maxLog = Math.log(this.max);
// calculate adjustment factor
var scale = (maxLog - minLog) / (maxPos - minPos);
// round numbers
var n = Math.exp(minLog + scale * (position - minPos));
// добавляем смещение
var offset = 5000000; // желаемое значение в центре
n = Math.floor(n / offset) * offset;
return n;
},

Здесь offset - это значение, которое вы добавляете для получения желаемого центрального значения. В данном случае, если вы хотите получить 5 млн в центре, то используйте offset = 5000000.

Теперь при использовании этой функции, вы должны получить значение близкое к 5 млн в центре логарифмической шкалы.

20 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир