0

我有一个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,我实际上只是在单页网站上使用$('div').hide()and 。$('div').show()

4

2 回答 2

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/

于 2013-06-18T08:48:02.577 回答
0

这段代码没有任何问题。我有两个具有相同选择器的事件处理程序,这导致了问题。感觉很笨...

于 2013-06-18T08:45:46.237 回答