JS组成及Web API介绍

一.JS组成及Web API介绍
1.JS组成(JS语法,DOM,BOM)

在这里插入图片描述

2.Web API介绍

Web API是浏览器提供的一套操作浏览器功能和页面元素的API(BOM和DOM)

二. 文档对象模型DOM

DOM是W3C定义的一系列改变网页内容,结构和样式的编程接口

1.DOM树

在这里插入图片描述

  • 文档:一个页面就是一个文档,DOM中使用document表示
  • 元素:页面中所有标签都是元素,DOM中使用element表示元素
  • 节点:网页中的所有内容都是节点(标签,属性,文本,注释等),DOM中使用node表示
2.使用DOM提供的接口操作元素
获取页面元素
  1. 根据id获取元素: getElementById()

    // 返回元素对象
    var element = document.getElementById("元素id");
    
  2. 获取某类标签的元素

    // 返回带有该类标签名的元素对象集合,伪数组存储
    var data = document.getElementsByTagName("标签名称");
    // 获取第一个元素
    var ele1 = data[0];
    

    注意:

    • 得到的对象集合,可以通过遍历得到每个元素对象

    • 得到的元素对象是动态的

  3. 获取body元素和html元素

    //获取body元素
    var bodyEle = document.body;
    // 获取html元素
    var htmlEle = document.documentElement;
    
操作页面元素触发事件

事件三要素:事件源,事件类型,事件处理程序。

事件的执行步骤:

  • 获取事件源
  • 注册事件
  • 添加事件处理程序(使用函数的形式)
<body>
    <button id = 'btn'>点击事件触发</button>
    <script>
        //点击按钮,弹出对话框
        // 事件有三部分组成,事件源 事件类型 事件处理程序 组成,合成事件三要素
        // 1.事件被触发的对象 哪里触发了这个事件? 按钮
        var btn = document.getElementById("btn");
        // 2.事件类型,如何触发事件,如鼠标点击(onclick)
		btn.onclick = function(){
            alert("1111111");
        }
    </script>
</body>

常见的事件类型
在这里插入图片描述

案例一:修改元素内容(点击按钮,显示时间)

<body>
    <button id = 'btn'>点击显示时间</button>
	<div id = 'div'></div>
    <script>
        //事件源
       var btn = document.getElementById("btn");
       var div = document.getElementById("div");
	   //时间类型,点击;事件程序修改页面内容,显示时间
	   btn.onclick = function(){
           div.innerText = getDate();
       }

	  function getDate(){
          Date date = new Date();
          var year = date.getFullYear();
          var month = date.getMonth()+1;
          var date = date.getDate();
          return year + '年' + month + '月' + date + '日';
      }
    </script>
</body>

案例二:修改元素属性(图片切换)

<body>
    <button id = 'ldh'>刘德华</button>
 	<button id = 'zxy'>张学友</button>
	<img id = 'img' src ='/img/ldh.jpg' alt = '' title = '刘德华' />
    <script>
        //事件源
       var ldh = document.getElementById("ldh");
       var zxy = document.getElementById("zxy");
	   var img = document.getElementById("img");
	   
	   ldh.onclick = function(){
           img.src = '/img/ldh.jpg';
           img.title = '刘德华';
       }

	   zxy.onclick = function(){
           img.src = '/img/zxy.jpg';
           img.title = '张学友';
       }
    </script>
</body>

案例三:修改表单属性

<body>
    <button id = 'btn'>按钮</button>
 	<input id = 'input' type = 'text' value = '请输入内容' />
	
    <script>
        //事件源
       var btn = document.getElementById("btn");
       var input = document.getElementById("input");
	   
	   btn.onclick = function(){
           // 修改表单里面的内容
           input.value = '按钮点击了';
          
       }
    </script>
</body>

案例四:表格隔行换色

<head>
    <style>
    	tbody tr {
            height: 30px;
        }
		tbody td {
            border-bottom: 1px solid #d7d7d7;
            font-size:12px;
            color: red;
        }
		.bg {
            backgroud-color:pink;
        }
    </style>
</head>

<body>
    <table>
    	<thead>
    		<tr>
    			<th>学号</th>
				<th>姓名</th>
				<th>性别</th>
    		</tr>
    	</thead>
		<tbody>
    		<tr>
    			<td>01</td>
				<td>张三</td>
				<td></td>
    		</tr>
    		<tr>
    			<td>02</td>
				<td>李四</td>
				<td></td>
    		</tr>
    		<tr>
    			<td>03</td>
				<td>王五</td>
				<td></td>
    		</tr>
    	</tbody>
    </table>
	
    <script>
       var trs = document.querySelector("tbody").querySelectorAll("tr");
	   for (i = 0 ; i < trs.lenth; i++){
           // 鼠标经过,修改背景颜色
           trs[i].onmouseover = function(){
           this.className = 'bg';   
           }
           // 鼠标离开,还原
           trs[i].onmouseout = function(){
           this.className = '';   
           }
       }

    </script>
</body>
三. 浏览器对象模型BOM

BOM即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window,BOM是浏览器厂商在各自浏览器上定义的,存在兼容性问题。我们主要学习一些各个浏览器通用的api。

1.BOM的构成

window对象是浏览器的顶级对象,它具有双重角色

  • 它是js访问浏览器的一个接口

  • 它是定义在全局作用域中的一个对象,定义在全局作用域中的变量函数都是window的属性和方法,在调用时我们可以省略widow,如alert()等。

在这里插入图片描述

2.widow对象常见事件

窗口加载事件

window.onload = function(){}
//或者
window.addEventListener("load",function(){})

window.onload() 是窗口(页面)加载事件,当文档内容完全加载完成触发该事件,调用函数。

有了window.onload() 就可以将js代码写到html页面的上方了。

定时器:setTimeout

5s后关闭广告

<body>
    <img id="ad" src = 'img/ad.jpg'/>
	
    <script>
       var ad = document.getElementById("ad");
	   // 5s后关闭广告
	   setTimeout(function(){
           ad.style.display = 'none';
       },5000)

    </script>
</body>

定时器:setInterval

60s可重新发送短信

<body>
    手机号码:<input id="input" /> <button id="btn">发送</button>
	
    <script>
        //按钮点击后,会禁用,disabled=true
        //同时按钮的内容发生改变,按钮中的内容需要使用innerHtml改变
        //按钮内容的秒数变化需要使用定时器
        //如果时间变为0,需要停止定时器,并还原按钮状态
       var btn = document.getElementById("btn");
	   var time = 60;
	   btn.onclick = function(){
           btn.disabled = true;
           var timer = setInterval(function(){
               if(time == 0){
                  // 如果时间变为0,需要停止定时器,并还原按钮状态
                  // 清除定时器
                   clearInterval(timer);
                   btn.disabled = false;
                   btn.innerHtml = '发送';
                   time = 60;
               }else{         
                   btn.innerHtml = '还剩下' + time + '秒';
                   time --;    
               }
           },1000);
       }

    </script>
</body>

setTimeout与setInterval的区别

  • setTimeout:指定的延迟时间到了就去调用回调函数,只调用一次回调函数
  • setInterval:每隔指定时间就会去调用回调函数,只要不清除定时器,就会一直调用
3.JS的同步和异步及其执行机制

同步:按代码排列顺序执行任务

异步:不按照代码顺序执行任务,对于耗时较长的任务进行异步处理,下一个任务不必等待上面的代码执行结束

console.log(1);
//异步
setTimeout(function(){
    console.log(3);
},2000);
console.log(2);

js的执行机制

1)先执行执行栈中的同步任务

2)异步任务放入任务队列中。

3)执行栈中的同步任务执行完毕,系统会按次序读取队列中的异步任务

在这里插入图片描述

4.window对象下的location属性

window对象给我们提供了一个location属性(这个属性本身也是一个对象,也成为location对象)用于设置窗体的URL,并且可以解析URL.

在这里插入图片描述

5.window对象下的history属性

window对象提供了history属性对象,与浏览器历史记录进行交互。

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值