В основном, обратное абс. Если бы у меня был:
if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
slideNum = -slideNum
}
console.log(slideNum)
Независимо от того, какая консоль всегда возвращает положительное число. Как это исправить?
Если я сделаю:
if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
_selector.animate({
left: (-slideNum * sizes.images.width) + 'px'
}, 750, 'InOutPDX')
} else {
_selector.animate({
left: (slideNum * sizes.images.width) + 'px'
}, 750, 'InOutPDX')
}
это работает, но это не "СУХОЙ" и просто глупо иметь целый блок кода ТОЛЬКО для файла -
.
javascript
jquery
math
Оскар Годсон
источник
источник
Ответы:
Однако вы понимаете, что для вашего кода
Если найденный индекс равен 3, а slideNum равен 3,
тогда 3 <3-1 => false,
поэтому slideNum остается положительным ??
Мне это больше похоже на логическую ошибку.
источник
Обратная сторона абс
Math.abs(num) * -1
.источник
return -Math.abs(num);
Основная формула преобразования положительного в отрицательное или отрицательного в положительное:
источник
i * -1
? Кроме того, я не уверен, что это отвечает на актуальный вопрос.i * -1
, похоже, не работает в текущей версии Chrome. Используйте -Math.abs (1), но не знаю, почему это работает, надеюсь, кто-то сможет объяснить, почему.i * -1
будет работать всегда. Не знаю, как вы пытались, может, у вас была опечатка. Но ... что плохого в том,i = -i
чтобы вместоi = i * -1
(илиi *= -1
) обратить положительное на отрицательное или отрицательное на положительное?Чтобы получить отрицательную версию числа в JavaScript, вы всегда можете использовать
~
побитовый оператор.Например, если у вас есть
a = 1000
и вам нужно преобразовать его в отрицательный, вы можете сделать следующее:Что привело бы к
a
существованию-1000
.источник
a = -a
?~1000
есть-1001
, нет-1000
.источник
Вы уверены, что контроль находится в теле
if
? Как в случаеif
когда-либо выполняется условие в ? Потому что, если этого не произойдет, телоif
никогда не будет выполнено иslideNum
останется положительным. Рискну предположить, что вы, вероятно, видите именно это.Если я попробую следующее в Firebug, похоже, это сработает:
slideNum *= -1
тоже должно работать. Как и должноMath.abs(slideNum) * -1
.источник
if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum *= -1 }
и я все еще возвращаю положительный результат в этом console.log?$this.find('.pdxslide-activeSlide').index() < slideNum-1
всегда говорит неправду .Если вам не нравится использовать Math.Abs * -1, вы можете использовать этот простой оператор if: P
Конечно, вы могли бы сделать эту функцию такой
makeNegative (-3) => -3 makeNegative (5) => -5
Надеюсь это поможет! Math.abs, вероятно, сработает для вас, но если это не так
источник
Результат:
-10
Результат:
10
Если вы разделите на минус 1, это всегда будет переворачивать ваше число в любом случае.
источник
В Javascript есть специальный оператор для этого: унарное отрицание .
TL; DR: это знак минус!
Чтобы отрицать число, просто добавьте к нему
-
самый интуитивно понятный префикс . Не нужно писать функцию, использоватьMath.abs()
умножение на-1
или побитовый оператор.Унарное отрицание работает с числовыми литералами:
Он также работает с переменными:
Вы даже можете использовать его несколько раз, если используете оператор группировки (он же круглые скобки:
Все вышеперечисленное работает и с переменной.
источник
Это сделает это за вас.
источник
Используйте 0 - x
x - число, которое вы хотите инвертировать
источник
-x
хватит.Он преобразует отрицательный массив в положительный или наоборот
источник
В ванильном javascript
Где число выше - это положительное число, которое вы собираетесь преобразовать.
Этот код преобразует только положительные числа в отрицательные числа простым умножением на -1.
источник