在本文中,我们将探讨一种常见的Web应用程序功能:用户登录成功后自动计时并跳转到特定页面。这个功能常用于确保用户在验证身份后能够安全地进入管理界面或其他受保护的区域。以下是如何实现这一功能的详细步骤:
我们有一个登录页面(`login.html`),其中包含一个简单的HTML表单,用户输入用户名(`u1`)和密码(`p1`)。表单提交时,`checkUser()` 函数会被调用,以检查输入的用户名和密码是否匹配预设值(在这个例子中,用户名是"hello",密码是"123")。如果匹配成功,表单将提交到`ok.html`页面。
```html
<form action="ok.html">
<!-- 省略的其他HTML代码 -->
<input type="submit" onclick="return checkUser()" value="登陆" style="margin-left:20px"/>
</form>
```
`checkUser()`函数通过JavaScript获取ID为`u1`和`p1`的输入元素,并比较它们的值。如果两者都正确,函数返回`true`,允许表单提交;否则,返回`false`,阻止表单提交。
一旦用户成功登录并到达`ok.html`页面,页面会自动开始一个倒计时,倒计时结束后将跳转到`manage.html`页面。这个功能是通过`setTimeout`和`setInterval`两个JavaScript函数来实现的。
在`ok.html`的JavaScript部分,我们首先定义了一个`setTimeout`函数,它会在5秒钟后执行`clearInterval(mytime);window.open('manage.html')`这段代码,这会清除计时器并打开`manage.html`页面。
```javascript
setTimeout("javascript:clearInterval(mytime);window.open('manage.html')",5000);
```
接着,我们定义了一个名为`changeSec()`的函数,这个函数用于更新页面上显示的剩余秒数。它从`myspan`元素的文本中读取当前秒数,减1,然后更新元素的文本内容。
```javascript
function changeSec(){
document.getElementById("myspan").innerText = parseInt(document.getElementById("myspan").innerText) - 1;
}
```
`setInterval`函数被用来每1秒钟调用一次`changeSec()`函数,这样就会每秒减少1秒的计时。
```javascript
var mytime = setInterval("changeSec()",1000);
```
在HTML部分,我们创建了一个`<span>`元素,其ID为`myspan`,初始值设置为5,表示还有5秒才会跳转。
```html
登陆成功 <span id="myspan">5</span> 秒钟后自动跳转...
```
当倒计时结束,`setTimeout`中的代码会执行,用户将被重定向到`manage.html`页面,这里可能是用户登录后的管理界面。
总结起来,这个功能的核心在于利用JavaScript的事件处理、表单验证和定时器机制。通过`checkUser()`函数确保用户认证无误,然后在`ok.html`页面中使用`setTimeout`和`setInterval`进行倒计时并自动跳转。这个实现方式简单直观,适用于很多Web应用的登录流程。