2013-10-22 3 views
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)"/> 

내 코드에 어떤 문제가 있습니까? 아무도 내가 문제를 찾도록 도와 줄 수 있기를 바랍니다. 미리 감사드립니다.

답변

-2

간단한 이해 예

임시 변수가 하나만 있으면됩니다.

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

당신은이 링크를 따라 할 수는 :

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

1

(y에서) 제 2 titleorder 인덱스 & 할당, 그것은 평방 괄호를 사용해야하는 위치 괄호를 사용하여 나타납니다.

xy 스와핑에 문제가없는 것 같습니다. 주위의 코드입니다.

이 시점에서 this.value이 무엇이 될지 확실하지 않으며 사용자가 값을 사용하지 않고 리터럴로 작성했습니다.

onkeyup이 할당되었는지 여부를 테스트하는 문장은 분명하지 않습니다. 이는 이벤트 처리기가 아니지만 다소 유사해야합니다. 어떤 이벤트 핸들러가 코드에 있는지 알 수는 없지만 꽤 펑키 한 것처럼 보입니다.

+0

당신했다, onkeyup''에 대한 이벤트 핸들러를 작성하려면 _trying_하지만, 확신 할 수 없으며 질문/게시 된 코드가 실제로 무엇을하려하는지 명확하지 않습니다. 나는 위의 대답에서 이것을 제안했지만 당신으로부터 더 이상의 설명을 보지 못한다.** 그래서 : 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'대신에 자바 스크립트 변수 값의 문자열 리터럴로 사용됩니다. 둘째, 괄호를 배열 인덱서로 사용하고 있습니다.

이 있어야한다 : 다른

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

누군가는 이미 'Y에'TMP '의 값을 할당하기 때문에'this.value ', 두 번째 호출에서 같은 의미를가 없습니다 지적 '. 의 조금 모든 일을 정리 해보자보기

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

자바 스크립트

에 Swaping에 대한

// 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 라인 코드를 Demo 어쩌면

관련 문제