我有一些用于图像过渡的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

这怎么可能?

最佳答案

为了正确地将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);
}

09-25 12:40