アプリケーションの状態を記録するグローバル変数window.current_index
があります。つまり、javascript Web アプリケーションのどのページにいるのかを記録します。
次に、次のページに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
。文字通り、1 ページのサイトで$('div').hide()
とを使用しているだけです。$('div').show()