交换两个元素x和y位置

时间:2012-04-01 14:53:08

标签: javascript swap

我正在尝试交换两个图像.x和.y位置。我正在使用的方法失败,因为我认为一旦我做第一次交换他们指向相同的位置或东西,似乎只有一个移动到新的位置希望这是有道理的。

theSequence[i].onClick = function(e){
           firstObject.push(this);

            if(firstObject.length == 2){
              firstObject[0].x = firstObject[1].x;
              firstObject[0].y = firstObject[1].y;
              firstObject[1].x = firstObject[0].x;
              firstObject[1].y= firstObject[0].y;
            }

3 个答案:

答案 0 :(得分:2)

你必须使用临时变量:

if(firstObject.length == 2)
{
    tempX = firstObject[0].x;
    tempY = firstObject[0].y;
    firstObject[0].x = firstObject[1].x;
    firstObject[0].y = firstObject[1].y;
    firstObject[1].x = tempX;
    firstObject[1].y= tempY;
}

答案 1 :(得分:1)

您的逻辑似乎存在问题。

当你这样做时:

firstObject[0].x = firstObject[1].x;
firstObject[0].y = firstObject[1].y;

两张图片都有相同的xy坐标。所以,当你这样做时:

firstObject[1].x = firstObject[0].x;
firstObject[1].y= firstObject[0].y;

这是多余的。在更改变量之前,您需要将xy firstObject[0]存储在变量中,然后将这些变量的值分配给firstObject[1]

答案 2 :(得分:1)

要避免ECMAscript中的临时变量,您可以使用:

[a, b] = [b, a];

(比如在python中)或者使用这个hack:

a = -(b = (a += b) - b) + a;

source