js两个栈实现前进后退
时间: 2023-06-20 14:07:18 浏览: 130
JavaScript不刷新实现浏览器的前进后退功能
可以使用两个栈来实现浏览器的前进和后退功能。我们假设当前正在浏览的网页为 A,然后我们访问了 B 和 C 两个网页,此时两个栈的情况如下:
后退栈:[C, B, A]
前进栈:[]
当我们点击后退按钮时,我们从后退栈中弹出栈顶元素 C,并将其压入前进栈中,此时两个栈的情况如下:
后退栈:[B, A]
前进栈:[C]
当我们再次点击后退按钮时,我们从后退栈中弹出栈顶元素 B,并将其压入前进栈中,此时两个栈的情况如下:
后退栈:[A]
前进栈:[C, B]
当我们点击前进按钮时,我们从前进栈中弹出栈顶元素 C,并将其压入后退栈中,此时两个栈的情况如下:
后退栈:[C, A]
前进栈:[B]
当我们再次点击前进按钮时,我们从前进栈中弹出栈顶元素 B,并将其压入后退栈中,此时两个栈的情况如下:
后退栈:[B, C, A]
前进栈:[]
这样就可以用两个栈来实现浏览器的前进和后退功能了。以下是一个简单的 JavaScript 实现:
```javascript
var backStack = []; // 后退栈
var forwardStack = []; // 前进栈
function goTo(url) {
backStack.push(url);
forwardStack = [];
// 跳转到 url
}
function back() {
if (backStack.length > 1) {
var currentUrl = backStack.pop();
forwardStack.push(currentUrl);
// 跳转到上一个 url
}
}
function forward() {
if (forwardStack.length > 0) {
var currentUrl = forwardStack.pop();
backStack.push(currentUrl);
// 跳转到下一个 url
}
}
```
在这个实现中,我们通过 backStack 和 forwardStack 两个数组来模拟后退栈和前进栈。goTo 函数用来跳转到一个新的 url,每次跳转时我们将当前的 url 压入后退栈中,并清空前进栈。back 函数用来执行后退操作,如果后退栈中有多于一个元素,则弹出后退栈顶元素并压入前进栈中,然后跳转到上一个 url。forward 函数用来执行前进操作,如果前进栈中有元素,则弹出前进栈顶元素并压入后退栈中,然后跳转到下一个 url。
阅读全文