html实现用户注册页面(生日实现年月日的三级联动)

news2024/11/18 16:23:21

注册页面
期待效果如下:


初始代码实现:

<!DOCTYPE html>
<html>
<head>
	<title>注册页面</title>
</head>
<body>
<!-- 表单,用于提交按钮,隐式提交 -->
<form action="" method="post">
<table border="0" width="500px" align="center" bgcolor="#f2f2f2">
	<caption><h1>用户注册</h1></caption>
	<tr>
		<td align="right">用户名:</td>
		<td><input type="text" name="username" id="" placeholder="请输入用户名"></td>
	</tr>

	<tr>
		<td align="right">密码:</td>
		<td><input type="password" name="password" id="" placeholder="请输入密码"></td>
	</tr>

	<tr>
		<td align="right">确认密码:</td>
		<td><input type="password" name="password" id="" placeholder="请再次输入密码"></td>
	</tr>

	<tr>
		<td align="right">性别:</td>
		<td>
			<!-- <input type="radio" name="xb" id="" checked="checked">-->
			<input type="radio" name="xb" id=""><input type="radio" name="xb" id=""></td>
	</tr>

	<tr>
		<td align="right">兴趣爱好:</td>
		<td>
			<input type="checkbox" name="" id="" value="1">看书
			<input type="checkbox" name="" id="" value="2">旅游
			<input type="checkbox" name="" id="" value="3">音乐
			<input type="checkbox" name="" id="" value="4">游戏
		</td>
	</tr>

	<tr>
		<td align="right">生日:</td>
		<td>
			<!-- 没用CSS,所以没有写完全 -->
			<select>
				<option value="1995">1995</option>
				<option value="1996">1996</option>
				<option value="1997">1997</option>
				<option value="1998">1998</option>
				<option value="1999">1999</option>
				<option value="2000">2000</option>
				<option value="2001">2001</option>
				<option value="2002">2002</option>
			</select><select>
				<option value="01">01</option>
				<option value="02">02</option>
				<option value="03">03</option>
				<option value="04">04</option>
				<option value="05">05</option>
				<option value="06">06</option>
				<option value="07">07</option>
				<option value="08">08</option>
			</select><select>
				<option value="01">01</option>
				<option value="02">02</option>
				<option value="03">03</option>
				<option value="04">04</option>
				<option value="05">05</option>
				<option value="06">06</option>
				<option value="07">07</option>
				<option value="08">08</option>
			</select></td>
	</tr>
	
	<tr>
		<td align="right">头像:</td>
		<td>
			<img src="image/headLogo/12.gif">
			<select>
				<option value="01">01</option>
				<option value="02">02</option>
				<option value="03">03</option>
				<option value="04">04</option>
			</select>

		</td>
	</tr>
		
	<tr>
		<td align="center" colspan="2">
			<input type="submit" value="注册">
		</td>
	</tr>
</table>
</form>
</body>
</html>

实际效果如下:


需要改进的地方:

  1. 生日的年月日未全部罗列,使用函数?
  2. 如何选择头像(通过下拉菜单)

改进优化

  1. 使用document.getElementById()获取年月日的控件
  2. 使用onchange()使下拉框变化触发某个函数,onload()刷新来显示年月日所对应的列表框选项
  3. yyyy.selectedIndex=Math.round(n/2);使年份默认显示为范围的中间值
  4. dd.options.length=0;列表框的选项为0,年月日的联动通过天的全删除再全添加得以实现
  5. 构造函数来实现年月日的选项初始赋值,年月日的三级联动(如:大小月、闰年等),以及头像的选择
函数作用
ymd()显示年月日列表框的条目,调用initSelect()
initSelect()简化年月日获取所需的三个循环
selectYmd()实现年月日的三级联动(大小月、闰年)
initLogo()列表框增加头像序号对应的选项
selectLogo()通过改变列表框的选项改变头像

html代码:

<!DOCTYPE html>
<html>
<head>
	<title>注册页面</title>
<script type="text/javascript" src="注册页面.js"></script>
</head>
<body onload="ymd(),initLogo()">
<!-- 表单,用于提交按钮,隐式提交 -->
<form>
	<!-- 利用表格来规范注册信息 -->
<table border="0px" width="400px" align="center" bgcolor="#f2f2f2">
	<caption><h1>用户注册</h1></caption>
	<tr>
		<td align="right">用户名:</td>
		<td><input type="userName" name="userName" placeholder="请输入用户名"></td>
	</tr>
	<tr>
		<td align="right">密码:</td>
		<td><input type="password" name="password" id="password" placeholder="请输入密码"></td>
	</tr>
	<tr>
		<td align="right">确认密码:</td>
		<td><input type="password" name="password" id="password" placeholder="请再次输入密码"></td>
	</tr>

	<tr>
		<td align="right">性别:</td>
		<td>
			<input type="radio" name="xb" value="1" checked ="checked"><input type="radio" name="xb" value="0"></td>	
	</tr>
	<tr>
		<td align="right">爱好:</td>
		<td>
			<input type="checkbox" name="interest" value="1">看书
			<input type="checkbox" name="interest" id="" value="2">旅游
			<input type="checkbox" name="interest" id="" value="3">音乐
			<input type="checkbox" name="interest" id="" value="4">游戏
		</td>
	</tr>
	<tr>
		<td align="right">生日:</td>
		<td>
			<select name="yyyy" id="yyyy" onchange="selectYmd()"></select><select name="mm" id="mm" onchange="selectYmd()"></select><select name="dd" id="dd"></select></td>
	</tr>
	<tr>
		<td align="right">头像:</td>
		<td>
			<img id="logoImg" src="image/headLogo/1.gif">
			<select id="logo" onchange="selectLogo()"></select>
		</td>
	</tr>
	<tr>
		<td align="center" colspan="2">
			<input type="submit" value="注册" onclick="register()">
		</td>
	</tr>
</table>
</form>
</body>
</html>

JS代码:

function ymd(){
	// 获取id=yyyy,mm,dd的控件
	var yyyy=document.getElementById("yyyy");
	var mm=document.getElementById("mm");
	var dd=document.getElementById("dd");
	// 获取当前日期的年份,将生日的结束年设为当前年份
	var date=new Date();
	var year=parseInt(date.getFullYear());
	// 设置生日中年月日的起始年份与结束年份
	initSelect(yyyy,1990,year);
	initSelect(mm,1,12);
	initSelect(dd,1,31);
	// 获取列表框长度,默认设置为中间值
	var n=yyyy.length;
	yyyy.selectedIndex=Math.round(n/2);
}
// 通过函数简化年月日获取所需的3个循环
function initSelect(obj,start,end){
	for(var i=start;i<=end;i++){
		// options.add()给列表框添加选项
		obj.options.add(new Option(i,i));
	}
}

// 实现年月日的三级联动(如大小月,闰年的2月)
function selectYmd(){
	var yyyy=document.getElementById("yyyy");
	var mm=document.getElementById("mm");
	var dd=document.getElementById("dd");
	var m=parseInt(mm.value);
	var dayEnd;
	// 设置大小月对应的天
	if(m==4 || m==6 || m==9 || m==11){
		dayEnd=30;
	}else if(m==2){
		dayEnd=28;
		y=parseInt(yyyy.value);
		// 设置闰年(非整百年:能被4整除的为闰年。整百年:能被400整除的是闰年。)
		if(((y%4==0) && (y%100!=0)) || y%400==0){
			dayEnd=29;
		}
	}else{
		dayEnd=31;
	}
	dd.options.length=0;
	initSelect(dd,1,dayEnd);
}

// 列表框增加头像序号对应的选项
function initLogo(){
	var logo=document.getElementById("logo");
	for(i=1;i<=15;i++){
		logo.options.add(new Option(i,i));
	}
}

// 通过改变列表框的选项改变头像
function selectLogo(){
	var logo=document.getElementById("logo");
	var n=logo.value;
	var logoImg=document.getElementById("logoImg");
	logoImg.src="image/headLogo/"+n+".gif";
}

function register(){
	alert("注册成功!");
}

网页效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/409468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后台管理系统 - 页面布局设计

前端的中后台管理系统相比于其他普通项目&#xff0c;从开发设计的角度来说有几点比较特殊&#xff1a; 一个是权限设计&#xff0c;具体实现可参考&#xff1a;传送门。一个是页面布局的设计&#xff0c;也是本文要说的。一个好的页面布局设计&#xff0c;无论是对于页面结构…

Java Web实现登录注册(超详细附代码)

Java Web实现登录注册&#xff08;超详细附代码&#xff09; 文章目录Java Web实现登录注册&#xff08;超详细附代码&#xff09;1.前言2.登录注册设计流程3.注册的数据流程4.登录的数据流程5.部分代码的展示5.1注册5.2登录6.总结1.前言 相信刚学Javaweb的小伙伴第一个接触的…

30个极致实用的谷歌浏览器插件,让你开发事半功倍

浏览器是开发人员最强大的工具。99% 的人不会 100% 地利用他们的浏览器。这里有 30 个浏览器扩展&#xff0c;如果你能合理充分利用将大大提升你的开发效率。1. WhatFont"WhatFont"&#xff0c;是一款帮助用户快速识别网页中字体信息的工具。当你在浏览网页时&#x…

vue|axios发送post请求详解

axios发送Post请求 首先我们要知道发送一个请求体的时候我们要明确发送的类型是什么&#xff0c;常见的类型有三种 form-dataapplication/jsonapplication/x-www-form-urlencoded 以上三种类型是进行数据传输的数据类型&#xff0c;我们知道在js代码中的对象都不是以上的三种…

react实现路由跳转

react通过路由实现页面跳转&#xff1a; ​ 函数式路由(withRouter)使用原生js方法实现路由功能。 ​ eg&#xff1a;export default withRouter(Home) Home是组件名称。 示例&#xff1a;class Home extends Component{<button onClick{this.goForward}>下一级</bu…

猿创征文|【C++游戏引擎Easy2D】炫酷动画来这学,位移动画构造函数让节点执行动画

&#x1f9db;‍♂️iecne个人主页&#xff1a;&#xff1a;iecne的学习日志 &#x1f4a1;每天关注iecne的作品&#xff0c;一起进步 &#x1f4aa;学C必看iecne 本文专栏&#xff1a;【C游戏引擎】. &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; ✨前…

from origin ‘null‘ has been blocked by CORS policy: Cross origin requests are only supported for ...

跨源资源请求问题解决方案 问题描述&#xff1a;当我们在vsCode中使用 open in brower插件打开html文件文件时&#xff0c;就会报错 xxx已被CORS策略阻止&#xff0c;引入的资源还会失效。 解决办法1 :Live Server插件 在vsCode的插件市场中搜索并安装Live Server插件&#x…

Axios

Axios是Ajax的一个框架&#xff0c;简化Ajax操作 一、基本操作 Axios执行Ajax的操作&#xff1a; 1. 添加axios的js文件 <script language"JavaScript" src"script/axios.min.js"></script> 2.1 客户端向服务端异步发送普通参数值 格式&am…

vue-router报错: uncaught error during route navigation

bug场景&#xff1a; H5项目中,浏览器流程走的通,ios流程走得通,安卓机有的可以有的不行 报错信息&#xff1a; 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 例如&#xff1a;数据传输过程中数据不时出现丢失的情况&#xff0c;偶尔会丢失一部分数据 APP 中接收数…

尚融宝06-ECMAScript基本介绍和使用

目录 一、ECMAScript 1、ECMA 2、ECMAScript 3、什么是 ECMA-262 4、ECMA-262 历史 5、ECMAScript 和 JavaScript 的关系 二、基本语法 1、let声明变量 2、const声明常量 3、解构赋值 4、模板字符串 5、声明对象简写 6、定义方法简写 7、参数的默认值 8、对象拓…

less变量

Less变量一、Less简介二、Less中的变量三、less外部引入一、Less简介 1.Less是一门css的预处理语言&#xff0c;less是一个css的增强版&#xff0c;通过less可以编写更少的代码实现更强大的样式。 变量名以两条短横线命名 例如&#xff1a; --color&#xff1a;red 2.Less特…

vue的created函数中方法执行的顺序设置方法

1.vue的created钩子函数中&#xff0c;方法的执行顺序 1.1情景&#xff1a;vue框架中通常在created钩子函数里执行访问数据库的方法&#xff0c;然后返回数据给前端&#xff0c;前端data中定义全局变量接收数据 1.2误区&#xff1a;我们可能会思考按照自己设定好的逻辑走&…

使用uni-app的uni.chooseImage获取的图片路径,存储到数据库中,无法在前端展示该路径的图片

html,js,uni-app, 首先我在uni-app中使用如下方法添加图片 uni.chooseImage({count: 1, //count: 6, //默认9sizeType: [original, compressed], //可以指定是原图还是压缩图&#xff0c;默认二者都有sourceType: [album], //从相册选择success: function(res) {console.log(…

【vue2】vue2中的性能优化(持续更新中)

⭐ v-for 遍历避免同时使用 v-if ⭐ v-for 中的key绑定唯一的值 ⭐ v-show与v-if对性能的影响 ⭐ 妙用计算属性 ⭐ 使用防抖与节流控制发送频率 ⭐ 路由守卫处理请求避免重复发送请求 ⭐ 使用第三方UI库的引入方式 【前言】 该系列是博主在使用vue2开发项目中常用上的一…

JavaScript ,18种常用数组方法,快来看看你会吗?

前言 众所周知&#xff0c;向后端请求数据&#xff0c;处理数据是前端工程师必备的技能&#xff0c;从后端请求回来的数据往往是数组的形式返回到前端&#xff0c;因此数组处理方法的重要性可想而知&#xff1b;数组的处理方法在MDN文档上很多&#xff0c;很多朋友在学习时往往…

vue配置代理服务器proxy

一、跨域。 跨域本质是浏览器基于同源策略的一种安全手段 所谓同源&#xff08;即指在同一个域&#xff09;具有以下三个相同点 协议相同&#xff08;protocol&#xff09;主机相同&#xff08;host&#xff09;端口相同&#xff08;port&#xff09; 非同源请求&#xff0c…

vue集成海康h5player实现播放

文章目录前言准备工作视频demo官方文档官方工具开源工具开始开发效果问题点前言 本篇章只针对官方提供个h5player工具&#xff0c;做播放和分屏demo。 当然本篇章也是针对已经接触了海康视频对接的开发者。 准备工作 视频demo 官方文档 API https://open.hikvision.com/d…

Not allowed to load local resource: file:///,浏览器禁止访问浏览器图片,文件解决方法

Not allowed to load local resource: file… 错误出现原因&#xff1a;浏览器出于安全考虑禁止直接读取本机文件(链接以file:///开头)&#xff0c; 解决办法&#xff1a; 创建一个web服务器&#xff0c;将文件放在这个服务器里&#xff0c;让文件有一个在线地址&#xff08…

【小程序项目开发-- 京东商城】uni-app之商品列表页面 (下)

&#x1f935;‍♂️ 个人主页: 计算机魔术师 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f310; 推荐一款找工作神器网站: 点击跳转牛客网 |笔试题库|面试经验|实习招聘内推| 还没有账户的小伙伴 速速点击链接…

推荐几个优秀的echarts 图表网站,让你轻松搞定全部报表

1.PPChart - 让图表更简单让图表更简单。PPChart 提供 Echarts 收录、图表制作等服务http://ppchart.com/#/ 2.https://madeapie.com/#/echarts图表制作&#xff0c;Make A Pie&#xff0c;Made A Pie&#xff0c;echarts案例分享&#xff0c;echarts教程分享https://madeapie…