Zasadniczo odwrotność abs. Jeżeli mam:
if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
slideNum = -slideNum
}
console.log(slideNum)
Bez względu na konsolę zawsze zwraca liczbę dodatnią. Jak to naprawić?
Jeśli zrobię:
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')
}
mimo to działa, ale nie jest to „SUCHE” i po prostu głupie mieć cały blok kodu TYLKO dla pliku -
.
javascript
jquery
math
Oscar Godson
źródło
źródło
Odpowiedzi:
Zdajesz sobie jednak sprawę, że dla twojego kodu
Jeśli znaleziony indeks to 3, a numer slajdu to 3,
to 3 <3-1 => fałsz,
więc numer slajdu pozostaje dodatni ?
Dla mnie wygląda to bardziej na błąd logiczny.
źródło
Odwrotność abs jest
Math.abs(num) * -1
.źródło
return -Math.abs(num);
Podstawowa formuła odwracania pozytywów na negatywne lub negatywne na pozytywne:
źródło
i * -1
? Nie jestem też pewien, czy to odpowiada na rzeczywiste pytanie.i * -1
nie działa w aktualnej wersji przeglądarki Chrome. Użyj -Math.abs (1), ale nie jestem pewien, dlaczego to działa, mam nadzieję, że ktoś może wyjaśnić dlaczego.i * -1
będzie działać zawsze. Nie wiem, jak próbowałeś, może miałeś jakąś literówkę. Ale ... co jest złego wi = -i
zamiasti = i * -1
(lubi *= -1
) odwracaniu pozytywów na negatywne lub negatywnych na pozytywne?Aby uzyskać ujemną wersję liczby w JavaScript, zawsze możesz użyć
~
operatora bitowego.Na przykład, jeśli masz
a = 1000
i chcesz przekonwertować go na wartość ujemną, możesz wykonać następujące czynności:Co by skutkowało
a
istnieniem-1000
.źródło
a = -a
?~1000
jest-1001
, nie-1000
.źródło
Czy jesteś pewien, że kontrola trafia do ciała
if
? Jak w przypadku, gdy stanif
zawsze jest prawdziwy? Bo jeśli tak się nie stanie, ciałoif
testamentu nigdy nie zostanie wykonane islideNum
pozostanie pozytywne. Zaryzykuję przypuszczenie, że prawdopodobnie to właśnie widzisz.Jeśli spróbuję wykonać następujące czynności w Firebug, wydaje się, że działa:
slideNum *= -1
powinien również działać. Tak jak powinnoMath.abs(slideNum) * -1
.źródło
if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum *= -1 }
i nadal otrzymuję wynik pozytywny w tym console.log?$this.find('.pdxslide-activeSlide').index() < slideNum-1
jest zawsze fałszywe.Jeśli nie masz ochoty używać Math.Abs * -1, możesz skorzystać z prostego stwierdzenia if: P
Oczywiście możesz uczynić to taką funkcją
makeNegative (-3) => -3 makeNegative (5) => -5
Mam nadzieję że to pomoże! Math.abs prawdopodobnie zadziała dla Ciebie, ale jeśli to nie jest tak mało
źródło
Wynik:
-10
Wynik:
10
Jeśli podzielisz przez minus 1, zawsze zmieni to twoją liczbę w obie strony.
źródło
Javascript ma do tego dedykowany operator: jednoargumentowa negacja .
TL; DR: To znak minus!
Aby zanegować liczbę, po prostu poprzedz ją
-
w możliwie najbardziej intuicyjny sposób. Nie musisz pisać funkcji, użyjMath.abs()
pomnóż przez-1
lub używaj operatora bitowego.Jednoargumentowa negacja działa na literałach liczbowych:
Działa również ze zmiennymi:
Możesz nawet użyć go wiele razy, jeśli użyjesz operatora grupowania (znanego również jako nawiasy:
Wszystkie powyższe działają również ze zmienną.
źródło
Zrobiłoby to za Ciebie.
źródło
Użyj 0 - x
x jest liczbą, którą chcesz odwrócić
źródło
-x
wystarczy.Konwertuje ujemną tablicę na dodatnią lub odwrotnie
źródło
W waniliowym javascript
Gdzie numer powyżej to liczba dodatnia, którą zamierzasz przeliczyć
Ten kod konwertuje tylko liczby dodatnie na liczby ujemne po prostu przez pomnożenie przez -1
źródło