javascript教程实战篇:表单验证+动态网页效果制作,边学边练易掌握

admin javascript教程 6


填表单时输错手机号要等提交后才提示?网页滚动时导航栏一动不动没变化?想做个点击切换图片的效果,代码写了半天没反应?新手学 JavaScript 总觉得 “语法学了用不上,实战做了没效果”,其实啊,表单验证和动态网页效果是最适合练手的实战项目,既实用又能巩固 JS 基础。今天兔子哥就带大家边学边练,从表单验证的实时提示到动态效果的交互实现,每个步骤都拆解得明明白白,代码能直接抄着用,保证新手也能轻松掌握!

一、表单验证实战:让用户边填边改,体验更友好


为啥要做表单验证?新手必懂的痛点


你肯定遇到过这种情况:填了半天表单,点提交才提示 “手机号格式错误”“密码太短”,回头修改时还得重新填一遍,特别麻烦。表单验证就是在用户输入时实时检查,哪里错了立马提示,既减少用户麻烦,又能帮服务器过滤无效数据,一举两得。

步骤 1:搭个简单的注册表单结构


先写 HTML,包含用户名、手机号、密码输入框,每个输入框配个提示区:
html
<form id="regForm"><div><label>用户名:label><input type="text" id="username" placeholder="3-10位字母或数字"><span class="tip" id="userTip">span> div><div><label>手机号:label><input type="tel" id="phone" placeholder="请输入11位手机号"><span class="tip" id="phoneTip">span>div><div><label>密码:label><input type="password" id="password" placeholder="至少6位"><span class="tip" id="pwdTip">span>div><button type="button" onclick="checkAll()">注册button>form>

小细节:按钮类型用button,别用submit,避免自动刷新页面,等验证通过了再处理提交。之前有个学员用submit,结果验证还没跑完就跳转了,折腾半天才找到原因。

步骤 2:写验证函数,给每个字段定规则


每个字段的验证规则不一样,咱们写单独的函数,方便修改和复用。
  • 用户名验证(3-10 位字母或数字):
    javascript
    function checkUsername() {const username = document.getElementById("username").value;const tip = document.getElementById("userTip");if (username === "") {tip.innerText = "用户名不能为空哦!";tip.style.color = "red";return false;} else if (username.length < 3 || username.length > 10) {tip.innerText = "请输入3-10位字符!";tip.style.color = "red";return false;} else {tip.innerText = "用户名可用~";tip.style.color = "green";return true;}}

  • 手机号验证(11 位数字,1 开头):
    javascript
    function checkPhone() {const phone = document.getElementById("phone").value;const tip = document.getElementById("phoneTip");// 简单正则:1开头,后面10位数字const reg = /^1[3-9]\d{9}$/;if (!reg.test(phone)) {tip.innerText = "请输入正确的11位手机号!";tip.style.color = "red";return false;} else {tip.innerText = "手机号格式正确~";tip.style.color = "green";return true;}}


步骤 3:加实时验证和提交验证


  • 实时验证:用户输入时就检查,给输入框加oninput事件:
    html
    <input type="text" id="username" oninput="checkUsername()" ...><input type="tel" id="phone" oninput="checkPhone()" ...>

  • 提交验证:点按钮时检查所有字段,全通过才允许提交:
    javascript
    function checkAll() {const isUserOk = checkUsername();const isPhoneOk = checkPhone();const isPwdOk = checkPassword();if (isUserOk && isPhoneOk && isPwdOk) {alert("验证通过,准备提交!");// 这里可以加真正的提交代码} else {alert("还有错误没改哦,看提示修改~");}}


常见错误对照表


错误现象原因解决办法
实时提示没反应没加 oninput 事件,或函数名拼错给 input 加oninput="函数名()",检查函数名是否正确
手机号验证总失败正则写错,比如少了\d或位数不对用正确正则/^1[3-9]\d{9}$/,多测试几个号码
提交后没反应按钮 type 是 submit,或验证函数没返回值改按钮 type 为 button,确保函数返回 true/false

二、动态网页效果制作:让网页 “活” 起来


学会表单验证后,再来试试动态效果,这些小功能能让网页瞬间变高级,新手也能轻松做出来。

效果 1:点击切换图片(练事件绑定和属性修改)


想做个相册切换效果?几步就能实现:
  • HTML 结构
    html
    <div><img id="myImg" src="img1.jpg" width="400"><button onclick="changeImg(1)">图1button><button onclick="changeImg(2)">图2button>div>

  • JS 代码
    javascript
    function changeImg(num) {const img = document.getElementById("myImg");// 根据按钮传的数字切换图片路径img.src = `img${num}.jpg`;// 加个简单提示alert(`切换到图片${num}`);}


关键点:用src属性修改图片路径,函数参数控制切换逻辑,新手多试几次就熟了。

效果 2:滚动时导航栏高亮(练滚动事件和样式修改)


网页滚动到不同区域,对应导航栏高亮,这个效果超实用:
  • HTML 结构
    html
    <nav><span class="nav-item" data-target="section1">首页span><span class="nav-item" data-target="section2">关于span>nav><section id="section1" style="height: 800px;">首页内容section><section id="section2" style="height: 800px;">关于内容section>

  • JS 代码
    javascript
    // 监听滚动事件window.onscroll = function() {const navItems = document.getElementsByClassName("nav-item");const sections = document.getElementsByTagName("section");// 遍历每个区域,看是否在可视区for (let i = 0; i < sections.length; i++) {const sectionTop = sections[i].offsetTop;const sectionHeight = sections[i].offsetHeight;// 当滚动到该区域时,高亮对应导航if (window.scrollY >= sectionTop - 100 && window.scrollY < sectionTop + sectionHeight - 100) {// 先清除所有高亮for (let j = 0; j < navItems.length; j++) {navItems[j].style.color = "black";}// 高亮当前导航navItems[i].style.color = "red";}}};


小技巧window.scrollY获取滚动距离,offsetTop获取元素距离顶部的位置,通过对比判断是否在可视区。

效果 3:输入框聚焦时放大(练聚焦事件和样式动画)


输入框点击时变大一点,体验更友好:
  • HTML
  • JS:javascript
    const input = document.getElementById("focusInput");// 聚焦时放大input.onfocus = function() {this.style.width = "300px";this.style.transition = "width 0.3s"; // 加过渡动画};// 失焦时恢复input.onblur = function() {this.style.width = "200px";};


关键点:用onfocus(聚焦)和onblur(失焦)事件,配合 CSS 过渡动画让效果更丝滑。

三、自问自答:新手实战中最常问的问题


Q:“表单验证为什么要用函数分开写?堆在一起不行吗?”
A:堆在一起确实能跑,但后期想改用户名规则,就得在一堆代码里找,容易改错。分开写每个函数只管一个功能,改起来方便,这就是 “代码复用” 的好处,新手早点养成这习惯,以后写复杂项目不吃亏。
Q:“动态效果加了没反应,控制台也没报错,咋回事?”
A:可能是元素没找到,比如 JS 代码写在元素前面,或者 ID 拼错了;也可能是事件绑错了,比如把onclick写成onclik(少个 c),这种小错误控制台不报错,但效果就是不出来,得多检查拼写。
Q:“这些效果看起来简单,实际做项目够用吗?”
A:完全够用!实际项目里的复杂效果,都是这些基础功能组合起来的。比如轮播图就是 “点击切换图片 + 自动切换 + 滚动动画” 的组合,先把基础练熟,复杂效果自然能学会。
兔子哥觉得,实战是学 JS 最快的方法,看十遍教程不如自己敲一遍代码。表单验证练的是 “条件判断 + DOM 操作”,动态效果练的是 “事件绑定 + 样式修改”,这都是 JS 的核心技能。刚开始练的时候,代码写错、效果没反应都很正常,别慌,对照错误表找原因,改对几次就顺了。
我带的学员里,有个零基础的宝妈,用这篇教程里的方法练了一周,就给自己的小网店做了表单验证和图片切换效果,成就感特别强。其实 JS 没那么难,重点是敢动手、不怕错,练着练着你会发现,自己也能做出别人眼里 “厉害的效果”。现在就打开编辑器,从表单验证开始敲,你会发现实战真的能让你进步飞快!

标签: 一举两得 服务器

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~