2013-10-22 70 views
1

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

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)"/> 

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

回答

-2

简单的例子来理解它

你只需要一个临时变量。

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

,您还可以点击此链接:

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

1

第二titleorder指数&分配(从y),似乎使用括号,它应该用方括号。

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

目前还不清楚this.value在这一点上会是什么(如果有的话),并且你已经将它写成文字 - 不使用它的值。

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

+0

也许你_trying_编写'onkeyup'事件处理程序,但我不能确定,问题/发布的代码不清楚你实际上想要做什么?我在上面的回答中提出了这个问题,但没有看到你的进一步澄清。**所以:在Google,**上搜索“Javascript事件处理程序示例”或“jQuery事件处理程序示例”,并在您准备好提出有关该问题的问题时再回来。 –

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

在这一行中,this.value是文字文本。你大概的意思是写

this.value = y; 
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)"/> 
+0

我同意将元素放入变量中,但不应'elementY'为'document.getElementById('titleorder ['+ this.value +']')'?无论是否正确,我都不确定,但这就是OP代码的运行方式。 –

+0

如果我们有'this'并且知道它是一个元素,那么我们已经有了这个元素,并且不需要获得新的引用。 – ps2goat

+0

问题是因为我无法获得y |的值var y = this.value; |如何更改代码的正确代码? – hurifajri

4

1行代码的Javascript

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

查看Demo