Web前端学习之路(五)DOM与事件

一、DOM

定义

DOM,全称Document Object Model,是一种将文档(页面)表现为结构化的表示方法,使每一个页面元素都是可操控的,DOM将网页和脚本以及其他的编程语言联系了起来。

DOM树

e0aCCD.png

PS. 图仅供参考。

常见DOM操作

方法说明
getElementById返回带有指定ID的元素
getElementsByName返回拥有相同名称的元素的节点列表
getElementsByTagName返回包含带有指定标签名称的所有元素的节点列表
getElementsByClassName返回包含带有指定类名的所有元素的节点列表

二、事件

定义

事件是指被程序发现的行为或发生的事情,而且它可能会被程序处理。

常用事件

鼠标事件
事件名说明
onclick在用户单击主鼠标按钮(一般是左边的按钮)或按下回车键时触发
ondblclick在用户双击主鼠标按钮时触发
onmouseover在鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边界之内时触发
onmouseout在鼠标指针位于一个元素上方,然后用户将其移动到另一个元素时触发
onmousedown在用户按下了任意鼠标按钮时触发
键盘事件
事件名说明
onkeydown按下键盘键
onkeyup紧接着keydown事件触发(只有按下字符键时触发)
keypress释放键盘键
表单事件
事件名说明
onfoucs获得焦点时触发
onsubmit点击提交按钮时触发
onblur失去焦点时触发
onchange值发生改变的时候触发

三、操作表单

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>操作表单</title>
	<script type="text/javascript" src="index.js"></script>
</head>
<body onload="init()">
	<form>
		姓名:<input type="text" name="username">
		密码:<input type="password" name="userpassword">
		<input type="button" name="btn" value="确认">
		<br>
		性别:
		<input type="radio" name="sex" value="0"><input type="radio" name="sex" value="1" checked="checked"><br>
		生日:
		<select id="year" name="year"></select><!-- 事件第1种调用方法 -->
		<select id="month" name="month" onchange="selectYmd()"></select><select id="day" name="day"></select><br>
		爱好:
		<input type="checkbox" name="hobby" value="read">阅读
		<input type="checkbox" name="hobby" value="run">跑步
		<input type="checkbox" name="hobby" value="anime">动漫
		<input type="checkbox" name="hobby" value="game">游戏
		<input type="button"  id="btn" name="hobbybtn" value="全选">
	</form>
</body>
</html>
/*
初始化
*/
var flag=true;	// 全选与否控制
function init() {
	var inputName = document.getElementsByName('username');
	// inputPasswd = document.getElementsByName("userpassword");

	var btn = document.getElementById("btn");
	var interest = document.getElementsByName("hobby");

	inputName[0].value = "大爷,留下你的大名吧!"

	birdyInit();

	// 事件第2种调用方法
	btn.onclick= function(){
		
		for(i=0;i<interest.length;i++){
			interest[i].checked=flag;
		}
		if(flag){
			btn.value="全不选";
		}else{
			btn.value="全选";
		}
		flag=!flag;//开关变量
	}
}

/*生日*/
function birdyInit(){
	var yyyy=document.getElementById("year");
	var mm=document.getElementById("month");
	var dd=document.getElementById("day");

	var date=new Date();
	var year=parseInt(date.getFullYear());

	initSelect(yyyy,1999,year);
	initSelect(mm,1,12);
	initSelect(dd,1,31);
	// 获取列表框的长度
	var n=yyyy.length;
	// 列表框选中某一个条目
	yyyy.selectedIndex=Math.round(n/2);
}

/*自动添加年月日*/
function initSelect(obj,start,end){
   for(var i=start;i<=end;i++){
		obj.options.add(new Option(i,i));
	}
}

/*确定每月天数*/
function selectYmd(){
	var yyyy=document.getElementById("year");
	var mm=document.getElementById("month");
	var dd=document.getElementById("day");
	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);
		if((y % 4==0 && y % 100 !=0) || y % 400 ==0){
			dayEnd=29;
		}
	}else{
		dayEnd=31;
	}
	dd.options.length=0;
	initSelect(dd,1,dayEnd);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值