Basicamente, o reverso do abdômen. Se eu tiver:
if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
slideNum = -slideNum
}
console.log(slideNum)
Não importa qual console sempre retorna um número positivo. Como faço para corrigir isso?
Se eu fizer:
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')
}
funciona embora, mas não é "SECO" e apenas estúpido ter um bloco inteiro de código APENAS para um -
.
javascript
jquery
math
Oscar Godson
fonte
fonte
Respostas:
Você percebe, no entanto, que para o seu código
Se o índice encontrado for 3 e slideNum for 3,
então 3 <3-1 => falso,
então slideNum permanecerá positivo ??
Parece mais um erro lógico para mim.
fonte
O reverso do abs é
Math.abs(num) * -1
.fonte
return -Math.abs(num);
A fórmula básica para reverter positivo para negativo ou negativo para positivo:
fonte
i * -1
? Além disso, não tenho certeza se isso responde à pergunta real.i * -1
não parece funcionar na versão atual do Chrome. Use -Math.abs (1), mas não sei por que isso funciona, espero que alguém possa expandir o porquê.i * -1
funcionará, sempre. Não sei como você tentou, talvez você tenha cometido algum erro de digitação. Mas ... o que há de errado emi = -i
vez dei = i * -1
(oui *= -1
) reverter o positivo para o negativo ou o negativo para o positivo?Para obter uma versão negativa de um número em JavaScript, você sempre pode usar o
~
operador bit a bit.Por exemplo, se você tem
a = 1000
e precisa convertê-lo em negativo, pode fazer o seguinte:O que resultaria em
a
ser-1000
.fonte
a = -a
?~1000
é-1001
, não-1000
.fonte
Tem certeza de que o controle está indo para o corpo do
if
? Como em que a condição emif
sempre é verdadeira? Porque do contrário, o corpo doif
nunca será executado eslideNum
permanecerá positivo. Vou arriscar um palpite de que provavelmente é isso que você está vendo.Se eu tentar o seguinte no Firebug, parece funcionar:
slideNum *= -1
também deve funcionar. Como deveriaMath.abs(slideNum) * -1
.fonte
if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum *= -1 }
e ainda estou retornando positivo naquele console.log?$this.find('.pdxslide-activeSlide').index() < slideNum-1
sempre é falso.Se você não quiser usar Math.Abs * -1, você pode usar esta instrução if simples: P
Claro que você poderia fazer uma função assim
makeNegative (-3) => -3 makeNegative (5) => -5
Espero que isto ajude! Math.abs provavelmente funcionará para você, mas se não funcionar, pouco
fonte
Resultado:
-10
Resultado:
10
Se você dividir por 1 negativo, sempre inverterá seu número de qualquer maneira.
fonte
Isso faria isso por você.
fonte
Javascript tem um operador dedicado para isso: negação unária .
TL; DR: É o sinal de menos!
Para negar um número, basta prefixá-lo
-
da maneira mais intuitiva possível. Não há necessidade de escrever uma função, useMath.abs()
multiplicar por-1
ou use o operador bit a bit.A negação unária funciona em literais de número:
Também funciona com variáveis:
Você pode até mesmo usá-lo várias vezes se usar o operador de agrupamento (também conhecido como parênteses:
Todos os itens acima também funcionam com uma variável.
fonte
Use 0 - x
x sendo o número que você deseja inverter
fonte
-x
suficiente.Ele irá converter a matriz negativa em positiva ou vice-versa
fonte
Em javascript vanilla
Onde o número acima é o número positivo que você pretende converter
Este código converterá apenas números positivos em números negativos, simplesmente multiplicando por -1
fonte