整数等于3不符合== 3条件

时间:2014-08-13 19:41:38

标签: javascript jquery

我有一些javascript / jQuery代码用于进行图像转换。 $(obj)是一个包含两个图像的框,它是每个图像的大小。以下代码片段用于选择$(obj)边框之外的新位置,这与之前使用的位置不同(因为一个图像向右滑动而新图像从左侧看起来比向右滑动更好,而另一个来自右边。)

            var newLoc = Math.floor((Math.random() * 4));
            if ($(obj).data('lastloc') == newLoc) {
                console.log("FIXED "+newLoc);
                if (newLoc == 3) newLoc = 2;
                if (newLoc == 2) newLoc = 3;
                if (newLoc == 0) newLoc = 1;
                if (newLoc == 1) newLoc = 0;
                console.log("WITH "+newLoc);
            }

我遇到的问题是Chrome和Firefox都在JavaScript控制台中输出:

FIXED 3
WITH 3

这怎么可能?

4 个答案:

答案 0 :(得分:10)

您需要else if。它刚刚落到这里

if (newLoc == 3) newLoc = 2;
if (newLoc == 2) newLoc = 3;

试试这个

if (newLoc == 3) newLoc = 2;
else if (newLoc == 2) newLoc = 3;
else if (newLoc == 0) newLoc = 1;
else if (newLoc == 1) newLoc = 0;

或使用正确的switch

答案 1 :(得分:4)

您将使用else以便只处理其中一个条件:

if (newLoc == 3) newLoc = 2;
else if (newLoc == 2) newLoc = 3;
else if (newLoc == 0) newLoc = 1;
else if (newLoc == 1) newLoc = 0;

您也可以使用开关:

switch (newLoc) {
  case 3: newLoc = 2; break;
  case 2: newLoc = 3; break;
  case 0: newLoc = 1; break;
  case 1: newLoc = 0; break;
}

或条件运算符:

newLoc =
  newLoc == 3 ? 2 :
  newLoc == 2 ? 3 :
  newLoc == 0 ? 1 :
  newLoc == 1 ? 0 :
  newLoc;

如果这四个值是变量可以拥有的唯一值,您甚至可以计算新值。只需翻转零位就可以获得新值:

newLoc ^= 1;

答案 2 :(得分:3)

为了将newLoc变量正确映射到不同的数字,您可以使用一个涉及进行此更改的对象。

更改

if (newLoc == 3) newLoc = 2;
if (newLoc == 2) newLoc = 3;
if (newLoc == 0) newLoc = 1;
if (newLoc == 1) newLoc = 0;

var newLoc = Math.floor((Math.random() * 4));
var loc = { 3: 2, 2: 3, 0: 1, 1: 0 };
if ($(obj).data('lastloc') == newLoc) {
 console.log("FIXED "+newLoc);
 newLoc = loc[newLoc] || newLoc;
 console.log("WITH "+newLoc);
}

答案 3 :(得分:1)

因为你的逻辑搞砸了:

 if (newLoc == 3) newLoc = 2;
 if (newLoc == 2) newLoc = 3;

如果它是3然后它变为2然后它又回到3。

你必须在第一个if之后将它们更改为else if语句