DOM\BOM,查找元素,定时器

(二)JavaScript函数

  • 事件三要素

    • 事件源: 触发事件的标签

    • 事件名:事件的名称

    • 事件函数:触发事件执行的脚本

DOM

(一)DOM模型介绍

  • 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标记语言的标准编程接口。通过 HTML DOM,JavaScript 能够访问和改变 HTML 文档的所有元素。
    当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

  • DOM对象树

    • DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)。

      • DOM有三部分组成

        • 元素节点
        • 属性节点
        • 文本节点
  • 概念解释

    • 文档节点(document对象):代表整个文档
    • 元素节点(element对象):代表一 元素(标签)
    • 文本节点(text对象):代表元素(标签)中的文本
    • 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
    • 注释节点(Comment对象):即页面中的注释

(二)查找元素

  • document.getElementById(“id属性值”) 通过id来获取单个元素

  • document.getElementsByClassName(“class属性值”) 通过class来获取元素的数组

    • 实例:
  <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>元素的获取</title>
    	</head>
    	<body>
    		<input type="text" name="username" class="cla" value="张三"/>
    		<input type="text" name="password" class="cla" value="123456"/>
    	</body>
    	<script>  		
    		//数组对象不能直接调用对象的函数或者是属性
    		var cla = document.getElementsByClassName("cla"); //返回的是一个数组		
    		console.log("获取到的数量是: " + cla.length); 		
    		cla[1].onblur = function(){
    			console.log(cla[1].value);
    		}

    	</script>

    </html>
  • document.getElementsByTagName(“标签名”) 通过标签来获取元素的数组

    • 实例
<!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>元素的获取</title>
    	</head>
    	<body>
    		<input type="text" name="username" class="cla" value="张三"/>
    		<input type="text" name="password" class="cla" value="123456"/>		
    	</body>
    	<script>		
    		var inp = document.getElementsByTagName("input");    		
    		inp[0].onfocus = function(){
    			inp[0].value = ""; //获取焦点时,清空原来的值
    			console.log("失去焦点被触发!");
    		}
    	</script>
    </html>
  • document.getElementsByName(“name属性值”) 通过class来获取元素的数组

    • 实例:
<!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>元素的获取</title>
    	</head>
    	<body>
    		<input type="text" name="username" class="cla" value="张三"/>
    		<input type="text" name="password" class="cla" value="123456"/>   		
    	</body>
    	<script>
    		//通过name属性值获取的元素对象依旧是一个数组
    		var na = document.getElementsByName("username");      		
    		na[0].onblur = function(){
    			console.log("失去焦点" + na[0].value);
    		}  		
    	</script>
    </html>
  • document.querySelector(“选择器”) 通过选择器来获取单个元素

    • 实例:
  <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>元素的获取</title>
    	</head>
    	<body>
    		<div id="div" class="cla">我是一个div1</div>
    		<div class="cla">我是一个div2</div>
</body>
    	<script>
    		var di = document.querySelector("#div");
    		console.log(di.innerText);
    	</script>
    	<script>
    		console.log("===========================")
    		var cla = document.querySelector(".cla"); //如果选择器可以选中多个元素也只返回第一个
    		console.log(cla.innerText);		
    	</script>
    </html>
  • document.querySelectorAll(“选择器”) 通过选择器来获取元素的数组

    • 实例:
 <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>元素的获取</title>
    	</head>
    	<body>
    		<div id="div" class="cla">我是一个div1</div>
    		<div class="cla">我是一个div2</div>
    	</body>
    	<script>
    		//不管选择器选中多少元素,始终返回一个元素的数组
    		var div = document.querySelectorAll("#div");
    		console.log(div.length);
    		console.log(div[0].innerText);
    	</script>
    	<script>
    		console.log("===========================")
    		var cla = document.querySelectorAll(".cla");
    		console.log(cla[1].innerText);    		
    	</script>
    </html>

(三)修改元素

  • 修改元素的内容

    • 修改元素的文本内容

      • 实例:
 <!DOCTYPE html>
      <html>
      	<head>
      		<meta charset="UTF-8">
      		<title>内容</title>
      	</head>
      	<body>
      		<div>
      			div
      			<a href="内容操作.html">点我</a>
      		</div>
      	</body>
      	<script>
      		var div = document.getElementsByTagName("div");
      		//标签里面的所有的文本 内容
      		var te = div[0].innerText;
      		console.log(te);   		
      		//改变标签内的文本内容,会覆盖原来所有标签内的内容
      		div[0].innerText = "我是改变的内容";      		
      		div[0].onclick = function(){
      			//该文本html会以文本形式设置
      			div[0].innerText = "<a href='内容操作.html'>改变的a</a>";
      		}
      	</script>
      </html>
  • 修改元素的html内容

    • 实例:
 <!DOCTYPE html>
      <html>
      	<head>
      		<meta charset="UTF-8">
      		<title>内容</title>
      	</head>
      	<body>
      		<div>
      			div
      			<a href="内容操作.html">点我</a>
      		</div>
      	</body>
      	<script>
      		var div = document.getElementsByTagName("div");
      		//html内容的获取
      		var htm = div[0].innerHTML;
      		console.log(htm);      		
      		//设置html内容
      		div[0].innerHTML = "<a href='内容操作.html'>改变</a>";
      	</script>
      </html>
  • 修改元素的属性

    • 属性值的获取
      语法: var 属性值 = 元素对象.属性名;

      • 实例:
 <!DOCTYPE html>
      <html>
      	<head>
      		<meta charset="UTF-8">
      		<title>内容</title>
      	</head>
      	<body>
      		<a href="www.baidu.html">点我</a>
      	</body>
      	<script>
      		var a = document.getElementsByTagName("a")[0];
      		//属性的获取
      		var att = a.href;
      		console.log(att);     		
      		//属性值的设置
      		a.href = "http://www.baidu.com";
      	</script>
      </html>
  • 属性值的设置
    语法: 元素对象.属性名 = “属性值”

    • 实例:
  • 改变元素的样式

    • 实例:
    <!DOCTYPE html>
      <html>
      	<head>
      		<meta charset="UTF-8">
      		<title>内容</title>
      	</head>
      	<body>
      		<div></div>
      	</body>
      	<script>
      		var div= document.getElementsByTagName("div")[0];
      		div.style.width = "100px";
      		div.style.height = "100px";
      		/* 注意对于元素的样式设置属性值的分隔符省略,然后按照驼峰命名法来写*/
      		div.style.backgroundColor = "red";       		
      		div.onclick = function(){
      			div.style.backgroundColor = "blueviolet";
      		}</script>
      </html>
  • 全选和全不选
    • 实例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<ul type="none">
			<li><input type="checkbox" name="hoppy" onclick="chooseall()"/>全选</li>
			<li><input type="checkbox" name="hoppy"/>敲代码</li>
			<li><input type="checkbox" name="hoppy"/>唱歌</li>
			<li><input type="checkbox" name="hoppy"/>跳舞</li>
		     <li><input type="checkbox" name="hoppy"/>跳多人运动舞</li>
		</ul>
	</body>
	<script>
		//获取
		function chooseall(){
			var hob=document.getElementsByName("hoppy");
		    var check=hob[0].checked;
		for(var i=1;i<hob.length;i++){
			hob[i].checked=check;
		}
		}
	</script>
<html>
  • 优化表单验证
    • 表单验证实例:
  <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>表单验证</title>
    	</head>
    	<body>
    		<form action="#" method="get" id="form">
    			<label>姓名:</label><input type="text" name="username"/><span id="user_mes"></span><br>
    			<label>密码:</label><input type="password" name="password"/><span id="pwd_mes"></span><br>
    			<label>确认密码:</label><input type="password" name="repassword"/><span id="repwd_mes"></span><br>
    			<input type="button" value="注册" onclick="verifyReg()"/><br>
    		</form>
    	</body>
    	<script>
    		function verifyReg(){ 			
    			var username = document.getElementsByName("username")[0].value;
    			var pwd = document.getElementsByName("password")[0].value;
    			var repassword = document.getElementsByName("repassword")[0].value;
    			if(username == "" || username == null){
    				var span = document.getElementById("user_mes");
    				span.innerText = "用户不能为空";
    				span.style.color = "red";
    				return false;
    			}    			
    			if(username.length < 6 || username.length > 16){
    				var span = document.getElementById("user_mes");
    				span.innerText = "用户名应该在6到16之间";
    				span.style.color = "red";
    				return false;
    			}
    			
    			if(pwd == "" || pwd == null){
    				var span = document.getElementById("pwd_mes");
    				span.innerText = "密码不能为空";
    				span.style.color = "red";
    				return false;
    			}
    			
    			if(repassword == "" || repassword == null){
    				var span = document.getElementById("repwd_mes");
    				span.innerText = "密码不能为空";
    				span.style.color = "red";
    				return false;
    			}
    			
    			if(pwd != repassword){
    				var span = document.getElementById("repwd_mes");
    				span.innerText = "两次密码输入不一致";
    				span.style.color = "red";
    				return false;
    			}	
    			var fo = document.getElementById("form");
    			fo.submit(); //函数的作用是将表单提交给服务器
    		}
    	</script>
    </html>
- 效果:

BOM(window)

定时器:在指定的时间后循环或者单次执行函数或者代码段

  • 循环定时器:每间隔固定的周期都会执行一次函数或者是代码段

    创建定时器
    var id = setInterVal(code,time);
    id 定时器标志
    code:定时器执行的代码
    time:定时器每次执行间隔的时间
    清除定时器
    clearInterval(id);

    • 创建:var id = window.setInterval(code,times);
      id 定时器标志
      code:定时器执行的代码
      time:定时器每次执行间隔的时间,单位是毫秒

    • 清除: window.clearInterval(id);
      id指需要清除的定时的编号,是一个数字

    • 实例:

      • 轮播图
<!DOCTYPE html>
      <html>
      	<head>
      		<meta charset="UTF-8">
      		<title>轮播图</title>
      		<style>
      			div{
      				width:400px;
      				height:300px;
      				margin:0 auto;
      			}
      		</style>
      	</head>
      	<body>
      		<!--显示的图片-->
      		<div><img src="../img/1.jpg" width="400px" height="300px"/></div>
      	</body>
      	<script>
      		var img = document.getElementsByTagName("img")[0];
      		var i = 1; //变量的初始化
      		window.setInterval(function(){
      			 i ++;
      			//获取图片的地址
      			img.src = "../img/" + i + ".jpg";
      			if(i == 5){ //判断图片是否执行一个轮回
      				i = 0;
      			}
      		},1000);
      	</script>
      </html>
- 时间显示:
<!DOCTYPE html>
      <html>
      	<head>
      		<meta charset="UTF-8">
      		<title>轮播图</title>
      		<style>
      			div{
      				width:400px;
      				height:300px;
      				margin:0 auto;
      			}
      		</style>
      	</head>
      	<body>
      		<!--时间显示-->
      		<div id="div"></div>
      	</body>
      	<script>
      		function showTime(){
      			var div = document.getElementById("div");
      			var time = new Date();
      			var st = time.toLocaleTimeString();
      			div.innerText = st;
      		}
      		//onload事件用来设置整个窗口中的文档加载完成之后执行后面的函数
      		window.onload = showTime;
      		/*window.setInterval(function(){
      			var div = document.getElementById("div");
      			var time = new Date();
      			var st = time.toLocaleTimeString();
      			div.innerText = st;
      		},1000);*/
      		//如果定时器执行的函数时已经定义的,则只需要传递函数名
      		var id = setInterval(showTime,1000);
      		console.log(id);
      		//清除定时器
      		window.clearInterval(id);
      	</script>
      </html>

  • 一次性定时器

    创建定时器
    var id = setTimeOut(code,time);
    id 定时器标志
    code:定时器执行的代码
    time:定时器每次执行间隔的时间
    清除定时器
    clearTimeOut(id);

    • 创建:var id = setTimeOut(code,time);

id 定时器标志
code:定时器执行的代码
time:定时器执行间隔的时间,单位毫秒
- 清除:clearTimeout(id);
id:表示一次性定时器的标识

	- 定时器清除实例:

- 实例

	- 模拟炸弹爆炸
  • 一次性定时器和循环定时器联合使用
 <!DOCTYPE html>
  <html>
  	<head>
  		<meta charset="UTF-8">
  		<title>轮播图</title>
  		<style>
  			img{
  				display: none;
  			}
  		</style>
  	</head>
  	<body>
  		<div id="di">还剩 3 秒</div>
  		<img src="../img/bang.jpg" />
  	</body>
  	<script>
  		var i = 3;
  		var id = setInterval(function(){
  			i --;
  			var di = document.getElementById("di");
  			di.innerText = "还剩" + i;
  		},1000);
  		
  		setTimeout(function(){
  			clearInterval(id)
  			var di = document.getElementById("di");
  			di.innerText = "";
  		},3100);
  		var id1 = setTimeout(function(){
  			var img = document.getElementsByTagName("img")[0];
  			img.style.display = "inline-block";
  		},3000);
  		
  		//清除一次性定时器

  //		clearTimeout(id1);
  	</script>
  </html>
  • 倒计时并模拟爆炸效果:

弹窗函数

  • alert(“消息”) 警告弹窗
  • confirm(“选择提示”);选择弹窗 返回boolean的值
  • prompt(“提示信息”) 输入弹窗,返回输入的内容

location

  • location.href = “地址”; 页面加载运行时跳转到该地址,相当于点击a标签
  • hostname 设置或返回当前 URL 的主机名。
  • host 设置或返回主机名和当前 URL 的端口号。

screen

docuemnt

XMind: ZEN - Trial Version

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值