Javascript:交换两个值

时间:2013-10-22 04:14:39

标签: javascript

我尝试交换两个值。当我更改一个值时,具有相同值的另一个值应更改为第一个值,但第二个值未定义。例如,第一个值是2,第二个值是6,如果我将2更改为6,6应该是2,但在这种情况下,6更改为未定义。 这是我的代码

var x = document.getElementById('titleorder['+indexarray+']').value;
var y = this.value;

if (document.getElementById('titleorder['+indexarray+']').onkeyup)
{

    var tmp = x;
    x = y;
    y = tmp;

    document.getElementById('titleorder['+indexarray+']').value = x;
    document.getElementById('titleorder(this.value)').value = y;


}

<input type="text" name="titleorder" id="titleorder[<?PHP echo $row->ORDER; ?>]" value="<?PHP echo $row->ORDER; ?>" size="5" onkeyup="sync(this.value)"/>

我的代码出了什么问题。我希望有人能帮我找出问题所在。提前谢谢。

5 个答案:

答案 0 :(得分:4)

用于在Javascript中交换的1行代码

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

查看Demo

答案 1 :(得分:2)

 document.getElementById('titleorder(this.value)').value = y;

在这一行中,this.value是文字文本。你可能想写

 this.value = y;

答案 2 :(得分:1)

第二个titleorder索引&amp;赋值(来自y)似乎使用括号,它应该使用方括号。

xy交换似乎没有问题,它是围绕它的代码。

此时还不清楚this.value会是什么(如果有的话),并且你把它写成文字 - 而不是使用它的价值。

测试if是否已分配的onkeyup语句不清楚..它不是事件处理程序,但它看起来应该是一个。我无法看到你的代码中有任何事件处理程序,看起来很时髦。

答案 3 :(得分:1)

这一行有很多问题:

document.getElementById('titleorder(this.value)').value = y;

首先,'this.value'用作字符串文字而不是javascript变量值。其次,您使用括号作为数组索引器。

这应该是:

document.getElementById('titleorder[' + this.value + ']').value = y;

其他人也指出'this.value'在第二次调用中的含义不同,因为你已经将'tmp'中的值赋给了'y'。让我们整理一下:

// expects an element to be passed in.
function sync(control)
{
    var elementX = document.getElementById('titleorder['+indexarray+']').value;
    var elementY = control;

    var x = elementX.value
    var y = elementY.value;

    if (elementX.onkeyup)
    {

        var tmp = x;
        x = y;
        y = tmp;

        elementX.value = x;
        elementY.value = y;


    }
} // end function sync

<input type="text" name="titleorder" id="titleorder[<?PHP echo $row->ORDER; ?>]" value="<?PHP echo $row->ORDER; ?>" size="5" onkeyup="sync(this)"/>

答案 4 :(得分:-2)

理解它的简单例子

您只需要一个临时变量。

var b = list[y];
list[y] = list[x];
list[x] = b;

您也可以点这个链接:

http://www.greywyvern.com/?post=265