js基础篇 07 Document获取元素 事件 元素属性选择 实战演练

07 Document获取元素 事件 元素属性选择 实战演练

Document获取元素

方法

getElementById()
  1. 因为我们文档页面从上往下加载,所以先得有标签 所以我们script写到标签的下面
  2. get 获得 element 元素 by 通过 驼峰命名法
  3. 参数 id是大小写敏感的字符串
  4. 返回的是一个元素对象
例子
<div id="time">2019-9-9</div>
<script>
    var timer = document.getElementById('time');
    console.log(timer);
    console.log(typeof timer);
    console.dir(timer);
</script>
补充

console.dir 可以打印我们返回的元素对象 更好的查看里面的属性和方法

getElementsByTagName()

1.返回的是 获取过来元素对象的集合 以伪数组的形式存储的

2.我们想要依次打印里面的元素对象我们可以采取遍历的方式

3.如果页面中只有一个该元素 返回的还是伪数组的形式

4.如果页面中没有这个元素 返回的是空的伪数组的形式

5.element.getElementsByTagName(‘标签名’); 父元素必须是指定的单个元素

例子
var lis = document.getElementsByTagName('li');
console.log(lis);
console.log(lis[0]);
for (var i = 0; i < lis.length; i++) {
    console.log(lis[i]);
}
var ol = document.getElementById('ol');
console.log(ol.getElementsByTagName('li'));
getElementsByClassName()

H5新增,根据类名获得某些元素集合

querySelector()

H5新增,返回指定选择器的第一个元素对象 切记 里面的选择器需要加符号 .box #nav

querySelectorAll()

H5新增,querySelectorAll()返回指定选择器的所有元素对象集合

属性

body

获取body 元素

html、documentElement

获取html 元素

innerHTML

获取标签内的的内容

innerText

获取标签内的的文字,不识别标签

事件

事件是有三部分组成 事件源 事件类型 事件处理程序 我们也称为事件三要素

事件三要素

事件源

事件被触发的对象 像是qt中的信号

事件类型

如何触发 什么事件 比如鼠标点击(onclick) 还是鼠标经过 还是键盘按下

事件处理程序

通过一个函数赋值的方式 完成

例子
var btn = document.getElementById('btn');
btn.onclick = function() {
    alert('btn被按下');
}

执行事件步骤

  1. 获取事件源
  2. 绑定事件 注册事件
  3. 添加事件处理程序

常见事件

onclick

点击后触发的事件

onfocus

获得焦点触发的事件

onblur

失去焦点触发的事件

元素属性选择

如果该属性是标签的属性,则可以直接

标签.属性名=属性;

如果该属性是其css的style属性,则需要

标签.style.属性名=属性;

实战演练

注册页面

要求

有一个用户名输入框和两个密码输入框,

用户名输入框要显示用户名的失焦文字

用户名输入框需要判断用户名是否为‘biang’,

如果是则呈现用户名已被注册,如果不是则呈现用户名可用

第一个输入框须判断是否长度大于或等于8,

如果是则呈现密码可用,如果不是则呈现密码长度需要大于或等于8

第二个密码输入框需要判断是否密码和第一个密码输入框里面的密码是否一致,

如果是则呈现两次输入的密码一致,如果不是则呈现两次输入的密码不一致

代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>注册页面</title>
		<style type="text/css">
			*{
				padding: 0px;
				margin: 0px;
			}
			ul{
				width: 500px;
			}
			ul li h4{
				display: inline-block;
				width: 120px;
				text-align: center;
				line-height: 10px;
			}
			ul li span{
				color: red;
			}
			ul li {
				height:30px;
				list-style: none;
			}
			.account{
				color: gainsboro;
			}
			ul li:last-child {
				height:60px;
				margin-right: 200px;
				text-align: center;
			}
			.submit-tip{
				display: inline-block;
				width: 300px;
				height: 30px;
				text-align: center;
			}
			.submit{
				width: 100px;
				height: 30px;
				background-color: white;
				border: 1px solid aqua;
			}
		</style>
	</head>
	<body>
		<ul>
			<li>
				<h4>账号:</h4>
				<input type="text" class="account" value="请输入账号" />
				<span class="account-tip"></span>
			</li>
			<li>
				<h4>密码:</h4>
				<input type="password" class="password-first" />
				<span class="password-first-tip"></span>
			</li>
			<li>
				<h4>再次输入密码:</h4>
				<input type="password" class="password-second" />
				<span class="password-second-tip"></span>
			</li>
			<li>
				<span class="submit-tip"></span>
				<input type="button" class="submit" value="注册" />
			</li>
		</ul>
		
		<script type="text/javascript">
			account = document.getElementsByClassName('account')[0];
			password1 = document.getElementsByClassName('password-first')[0];
			password2 = document.getElementsByClassName('password-second')[0];
			accountTip = document.getElementsByClassName('account-tip')[0];
			password1Tip = document.getElementsByClassName('password-first-tip')[0];
			password2Tip  = document.getElementsByClassName('password-second-tip')[0];
			submit = document.getElementsByClassName('submit')[0];
			submitTip= document.getElementsByClassName('submit-tip')[0];
			
			var flags=[false,false,false];
			function password2Check(){
				console.log('password2Check');
				if(password2.value!=''){
					if(flags[1]==false){
						password2Tip.innerText='密码不符合规范';
						password2Tip.style.color='red';
						flags[2]=false;
					}else
					if(password2.value==password1.value){
						password2Tip.innerText='两次输入的密码一致';
						password2Tip.style.color='green';
						flags[2]=true;
					}else{
						password2Tip.innerText='两次输入的密码不一致';
						password2Tip.style.color='red';
						flags[2]=false;
					}
				}
			}
			account.onfocus=function(){
				if(this.value=='请输入账号'){
					this.value='';
					this.style.color='black';
					flags[0]=false;
				}
			}
			account.onblur=function(){
				if(this.value==''){
					this.value='请输入账号';
					this.style.color='gainsboro';
					flags[0]=false;
				}else
				if(this.value=='biang'){
					accountTip.innerText='该用户名已被注册';
					flags[0]=false;
				}else{
					accountTip.innerText='该用户名可用';
					accountTip.style.color='green';
					flags[0]=true;
				}
			}		
			password1.onblur=function(){
				if(this.value!=''){
					if(this.value.length>=8){
						password1Tip.innerText='密码可用';
						password1Tip.style.color='green';
						flags[1]=true;
					}else{
						password1Tip.innerText='密码长度需要大于或等于8';
						password1Tip.style.color='red';
						flags[1]=false;
					}
				}
				password2Check();
			}
			password2.onblur=password2Check;
			
			submit.onclick=function(){
				if(!flags[0]){
					submitTip.innerText='用户名不满足条件';
				}else if(!flags[1]){
					submitTip.innerText='密码不满足条件';
				}else if(!flags[2]){
					submitTip.innerText='密码重新输入不满足条件';
				}else {
					submitTip.innerText='注册成功';
					submitTip.style.color='green';
				}
			}
		</script>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值