2013-06-18 2 views
0

나는 응용 프로그램 상태, 즉 자바 스크립트 웹 응용 프로그램에서 어떤 페이지에 있는지를 기록하는 전역 변수 window.current_index을 가지고 있습니다. 그런 다음JavaScript 전역 변수가 변경된 후에 원래 값으로 되돌아갑니다?

나는 다음 페이지로 이동 코드 블록을 가지고 있고, 상태 변화를 반영하는 단위는 window.current_index (그냥 열심히 문제를 볼 수 있도록 할 무관 DOM 조작 코드를 꺼내서) :

$('#next-page').click(function() { 
    console.log('current index is ' + window.current_index); 
    var next_index = window.current_index + 1; 
    console.log('next index is ' + next_index); 
    //update the index 
    window.current_index = window.current_index + 1; 
    console.log('current index is now ' + window.current_index); 
}); 

처음에는 문제가 없지만 다시 클릭하면 의도 한 결과가 나타나지 않습니다.

current index is 2   main.js:57 
next index is 3   main.js:59 
current index is now 3  main.js:62 
current index is 2   main.js:57 
next index is 3   main.js:59 
current index is now 3  main.js:62 

내가 다시 기능을 발사 할 때 window.current_index는 그것이 이전했다하더라도, 업데이트되지 않은 것으로 나타납니다 콘솔 로깅으로, 나는 이상한 출력을 얻을?이 변수가 적절한 범위에 있지 않아 앱 상태를 저장할 수 있으며 이벤트 핸들러 호출에서 지속됩니다. 분명히 그것이 작동하지 않기 때문에 ... 내가 뭘 잘못 했니? 나는 이것이 범위 문제라고 추측하고 있지만, 내가 올바르게 할 수있는 방법을 알지 못한다./

명확화 : 페이지가 다시로드되는 페이지는 없습니다. 페이지 작업 사이에 다시로드되지 않습니다. JavaScript 숨김/표시를 통해 새로운 "프레임"을 보여줍니다. 나는 또한 iframes을 사용하지 않고 있는데, 나는 문자 그대로 단지 하나의 페이저 사이트에 $('div').hide()$('div').show()을 사용하고있다.

+1

을 위해 잘 작동합니다. 웹은 무국적자입니다. 따라서 다른 페이지로 전환하면 변수가 초기 값으로 재설정됩니다. 세션 변수를 사용하거나 로컬 저장소를 사용하여이를 수행해야합니다. –

+0

절대로 다른 페이지로 전환하거나 페이지를 다시로드하지 않습니다. 내가하고있는 일은 자바 스크립트 숨기기/표시를 통해 새로운 "프레임"을 보여주는 것입니다. – wnajar

+0

다른 URL을 사용하는 프레임을 사용하는 경우에도 동일하게 적용됩니다. –

답변

1

이이 범위 지정 문제가되지 않습니다 나

window.current_index = 0; 
$('#next-page').click(function() { 
    console.log('current index is ' + window.current_index); 
    var next_index = window.current_index + 1; 
    console.log('next index is ' + next_index); 
    //update the index 
    window.current_index = window.current_index + 1; 
    console.log('current index is now ' + window.current_index); 
}); 

http://jsfiddle.net/hHFkJ/1/

+0

문제는 코드베이스의 다른 곳에서 코드입니다. 당신 말이 맞습니다. – wnajar

0

이 코드에는 아무런 문제가 없습니다. 동일한 선택기가있는 두 개의 이벤트 처리기가있어서 문제가 발생했습니다. ... 바보 같은 느낌은

관련 문제