基本的に、腹筋の逆。私が持っている場合:
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')
}
カントーは動作しますが、「DRY」ではなく、-
のコードブロック全体をそのまま保持するのは愚かです
Math.abs(num) => Always positive
-Math.abs(num) => Always negative
ただし、コードについては、
if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum = -slideNum }
console.log(slideNum)
見つかったインデックスが3で、slideNumが3の場合
then 3 <3-1 => false
so slideNum 正のまま ??
私にはもっと論理エラーのように見えます。
Absの逆はMath.abs(num) * -1
です。
正から負、または負から正に反転する基本的な式:
i - (i * 2)
JavaScriptで数値の負のバージョンを取得するには、いつでも~
ビット演算子を使用できます。
たとえば、a = 1000
があり、それをネガに変換する必要がある場合、次のことができます。
a = ~a + 1;
a
は-1000になります。
コントロールがif
の本体に挿入されますか? if
の条件は常に当てはまりますか?そうでない場合、if
の本体は実行されず、slideNum
は正のままです。私はこれがおそらくあなたが見ているものであるという推測を危険にさらすつもりです。
Firebugで次のことを試すと、うまくいくようです:
>>> i = 5; console.log(i); i = -i; console.log(i);
5
-5
slideNum *= -1
も機能するはずです。 Math.abs(slideNum) * -1
のように。
var x = 100;
var negX = ( -x ); // => -100
Math.Abs * -1を使用したくない場合は、この単純なifステートメントを使用できます:P
if (x > 0) {
x = -x;
}
もちろん、これを次のような関数にすることもできます
function makeNegative(number) {
if (number > 0) {
number = -number;
}
}
makeNegative(-3)=> -3 makeNegative(5)=> -5
お役に立てれば! Math.absはおそらくあなたのために動作しますが、それがこれではない場合
var i = 10;
i = i / -1;
結果:-10
var i = -10;
i = i / -1;
結果:10
負の1で除算すると、常にどちらの方法でも数字が反転します。
num * -1
これはあなたのためにそれを行います。
0-xを使用
xは、反転する数値です
バニラジャバスクリプトで
if(number > 0)
return -1*number;
number上記は、変換する正の数です
このコードは、-1を掛けることで、正の数だけを負の数に変換します。