2013-10-22 112 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