1

我尝试交换两个值。当我更改一个值时,另一个具有相同值的值应更改为第一个值,但第二个值未定义。例如第一个值为 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)"/>

我的代码有什么问题。我希望任何人都可以帮助我找出问题所在。提前致谢。

4

5 回答 5

4

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

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

查看演示

于 2013-10-22T04:21:59.637 回答
2
 document.getElementById('titleorder(this.value)').value = y;

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

 this.value = y;
于 2013-10-22T04:19:20.497 回答
1

第二个titleorder索引和赋值(来自y)似乎在应该使用方括号的地方使用了括号。

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

目前还不清楚this.value会是什么(如果有的话),你已经把它写成文字——没有使用它的值。

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

于 2013-10-22T04:19:09.507 回答
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)"/>
于 2013-10-22T04:19:55.050 回答
-2

简单的例子来理解它

您只需要一个临时变量。

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

你也可以点击这个链接:

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

于 2013-10-22T04:18:54.917 回答