Web API介绍及DOM对象(一)

2021-9-17    前端达人

目录

一、API 和 Web API

1.API 

2.Web API  

3.API 和 Web API总结 

二、DOM 介绍 

1. DOM树 

三、获取元素方法 

1.getElementById()

2.getElementsByTagName

  2.1element.getElementsByTagName() 

3.HTML5 新增的方法获取

3.1 document.getElementsByClassName('类名')

3.2 document.querySelector('选择器')

3.3 document.querySelectorAll('选择器')

4.获取 body 、html 元素 

四、事件和样式操作 

1.事件概述

2.执行事件的步骤 

2.1 常见的鼠标事件 

3. 操作元素 

3.1 改变元素内容

3.2 修改元素属性

3.3 修改表单元素的属性

3.4 修改样式属性


一、API 和 Web API

1.API 

 API( Application Programming Interface,应用程序编程接口)
是一些预先定义的函数,目的是提供应用程序
与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
简单理解: API是给程序员提供的一种工具,以便能更轻松的实现想要完成的功能

2.Web API  

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

比如我们想要浏览器弹出一个警示框,直接使用alert( '弹出');

3.API 和 Web API总结 

1. API是为我们程序员提供的一个接口,帮助我们实现某种功能,我们会使用就可以,不必纠结内部如何实现
2. Web API主要是针对于浏览器提供的接口,主要针对于浏览器做交互效果
3. Web API 一般都有输入和输出(函数的传参和返回值) ,Web API很多都是方法(函数)
4.学习Web API可以结合学习内置对象方法的思路学习

二、DOM 介绍 

文档对象模型( Document Object
Model ,简称DOM) ,是W3C组织推荐的处理可扩展标记语言( HTML或者XML )的标准编程接口
W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容、结构和样式 

1. DOM树 

  •  文档:一个页面就是一个文档,DOM中使用 document表示
  • 元素:页面中的所有标签都是元素,DOM中使用 element表示
  • 节点:网页中的所有内容都是节点(标签、属性、文本、注释等),DOM中使用 node表示

DOM把以上内容都看作是对象 

三、获取元素方法 

1.getElementById()

 使用 getElementById( ) 方法可以获取带有ID的元素对象


  1. <div id="time" >2019-9-9 </div>
  2. <script>
  3. var timer = document.getElementById('time');
  4. console.dir(timer);
  5. </script>
  6. //返回结果为<div id= "time">2019-9-9</div>这一整个标签

 注意:
1.因为我们文档页面从上往下加载,先得有标签所以我们script 写到标签的下面
2. get 获得element 元素 by 通过驼峰命名法
3.参数 id 是大小写敏感的字符串
4.返回的是一个元素的对象
5. console.dir 打印我们返回的元素对象更好的查看里面的属性和方法

2.getElementsByTagName

 使用getElementsByTagName()方法可以返回带有指定标签名的对象的集合
 document.getElementsByTagName('标签名');


  1. <ul>
  2. <li>1</li>
  3. <li>2</li>
  4. <li>3</li>
  5. <li>4</li>
  6. <li>5</li>
  7. </ul>
  8. <script>
  9. var lis = document.getElementsByTagName('li');
  10. console.log(lis);
  11. </script>

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

 2. 我们想要依次打印里面的元素对象我们可以采取遍历的方式  
   for(var i = 0; i < lis.length; i++) {
       console.log(lis[i]);
    }

 3. 得到元素对象是动态的,标签里面的内容变了,得到的内容就变了.

  2.1element.getElementsByTagName() 

element.getElementsByTagName()  可以得到这个元素里面的某些标签 


  1. <ul id = "nav">
  2. <li>1</li>
  3. <li>2</li>
  4. <li>3</li>
  5. <li>4</li>
  6. <li>5</li>
  7. </ul>
  8. <script>
  9. var nav = document.getElementById('nav');
  10. var navLis = nav.getElementsByTagName('li');
  11. </script>

3.HTML5 新增的方法获取

3.1 document.getElementsByClassName('类名')

根据类名返回元素对象集合  


  1. <div class="box" >123</div>
  2. <script>
  3. var boxs = document.getElementsByClassName('box');
  4. </script>

3.2 document.querySelector('选择器')

 根据指定选择器返回第一个元素对象
 注意:里面的选择器需要加符号 类选择器:.box   id选择器: #box


  1. var firstBox = document.querySelector('.box');
  2. var nav = document.querySelector('#nav');
  3. var firstBox = document.querySelector('li');

3.3 document.querySelectorAll('选择器')

返回指定选择器的所有元素对象集合 


  1. var allBox = document.querySelectorAll('.box');
  2. //返回所有 class 名为 box 的标签

4.获取 body 、html 元素 


  1. var body = document.body ;
  2. // 返回 body 元素对象
  3. var htmlEle = document.documentElement;
  4. // 返回 html 元素对象

四、事件和样式操作 

1.事件概述

JavaScript 使我们有能力创建动态页面,而事件是可以被JavaScript侦测到的行为

简单理解:触发---响应机制

网页中的每个元素都可以产生某些可以触发 JavaScript 的事件,例如,我们可以在用户点击某按钮时产生一个事件,然后去执行某些操作
 

 事件是有三部分组成   事件源  事件类型  事件处理程序  

  1. 事件源  事件被触发的对象     比如按钮
  2. 事件类型   如何触发   比如鼠标点击触发
  3. 事件处理程序  通过一个函数赋值的方式  完成

2.执行事件的步骤 

1. 获取事件源

2. 注册事件(绑定事件)

3. 添加事件处理程序(采用函数赋值形式)
 

2.1 常见的鼠标事件 

鼠标事件 触发条件
onclick 鼠标点击左键触发
onmouseover 鼠标经过触发
onmouseout 鼠标离开触发
onfocus 获取鼠标焦点触发
onblur 失去鼠标焦点触发
onmousemove 鼠标移动触发
onmouseup 鼠标弹起触发
onmousedown 鼠标按下触发

3. 操作元素 

JS的 DOM 操作可以改变网页内容、结构和样式,我们可以利用 DOM 操作元素来改变元素里面的内容、属性等。注意一下都是属性 

3.1 改变元素内容

① element.innerText 

可用于获取标签中的内容。此时获取的是从起始位置到终止位置的内容,但它去除 html 标签, 同时空格和换行也会去掉

获取到 p 标签再打印 p 标签中的内容
var p = document.querySelector('p');
console.log(p.innerText);

② element.innerHTML

获取内容时,获取的是起始位置到终止位置的全部内容,包括 html 标签, 同时保留空格和换行

获取到 p 标签再打印 p 标签中的内容
var p = document.querySelector('p');
console.log(p.innerHTML);

普通标签使用,表单不能用

3.2 修改元素属性

  src 、href、id 、 alt 、title

案例:点击不同按钮显示不同图片


  1. <title>Document</title>
  2. <style>
  3. img {
  4. width: 300px;
  5. margin-top: 20px;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <button id="but1">按钮1</button>
  11. <button id="but2">按钮2</button>
  12. <br>
  13. <img src="../images/objpic07.jpg" alt="" title="图片1">
  14. <script>
  15. var item1 = document.getElementById('but1');
  16. var item2 = document.getElementById('but2');
  17. var img = document.querySelector('img');
  18. item1.onclick = function() {
  19. img.src = '../images/objpic07.jpg';
  20. img.title = '图片1';
  21. }
  22. item2.onclick = function() {
  23. img.src = '../images/objpic08.jpg';
  24. img.title = '图片2';
  25. }
  26. </script>
  27. </body>

3.3 修改表单元素的属性

可操作的表单元素的属性: type 、value、 checked、 selected、 disabled

按下按钮修改表单框 里面的内容,通过修改 value
input.value 等于 this.value  因为 this指向的是事件函数的调用者   

案例:仿京东显示隐藏密码

 


  1. <title>Document</title>
  2. <style>
  3. .box {
  4. position: relative;
  5. width: 400px;
  6. border-bottom: 1px solid #ccc;
  7. margin: 100px auto;
  8. }
  9. .box input {
  10. width: 370px;
  11. height: 30px;
  12. border: 0;
  13. outline: none;
  14. }
  15. .box img {
  16. position: absolute;
  17. top: 2px;
  18. right: 2px;
  19. width: 24px;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div class="box">
  25. <label for="">
  26. <img src="../images/close.png" alt="" id="pic">
  27. </label>
  28. <input type="password" id="item">
  29. </div>
  30. <script>
  31. var item = document.getElementById('item');
  32. var pic = document.getElementById('pic');
  33. var flag = 0;
  34. pic.onclick = function() {
  35. if(flag == 0) {
  36. item.type = 'text';
  37. this.src = '../images/open.png';
  38. flag = 1;
  39. } else {
  40. item.type = 'password';
  41. this.src = '../images/close.png';
  42. flag = 0;
  43. }
  44. }
  45. </script>
  46. </body>

3.4 修改样式属性

① element.style 行内样式操作

② element.className 类名样式操作

行内样式案例:显示与隐藏文本操作(当Input获取焦点,文本框初始内容消失,失去焦点,内容出现) 


  1. <title>Document</title>
  2. <style>
  3. input {
  4. color: #999;
  5. outline: none;
  6. height: 24px;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <input type="text" value="手机">
  12. <script>
  13. var item = document.querySelector('input');
  14. item.onfocus = function() {
  15. if(this.value == '手机') {
  16. this.value = '';
  17. }
  18. this.style.color = '#333';
  19. this.style.border = '1px solid pink';
  20. }
  21. item.onblur = function() {
  22. if(this.value == '') {
  23. this.value = '手机';
  24. }
  25. this.style.color = '#999';
  26. this.style.border = '1px solid black';
  27. }
  28. </script>
  29. </body>

 类名样式案例:密码框验证信息(提示输入6~16位密码,不满或超出提示错误,正确则提示正确)


  1. <title>Document</title>
  2. <style>
  3. .box {
  4. width: 400px;
  5. margin: 100px auto;
  6. }
  7. input {
  8. outline: none;
  9. }
  10. .pic {
  11. height: 15px;
  12. display: inline-block;
  13. line-height: 15px;
  14. text-indent: 18px;
  15. font-size: 13px;
  16. color:blue;
  17. background: url(../images/mess.png) no-repeat;
  18. }
  19. .wrong {
  20. background: url(../images/wrong.png) no-repeat;
  21. color: red;
  22. }
  23. .right {
  24. background: url(../images/right.png) no-repeat;
  25. color: green;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <div class="box">
  31. <input type="password" class="ipt">
  32. <p class="pic">请输入6~16位的密码</p>
  33. </div>
  34. <script>
  35. var item = document.querySelector('.ipt');
  36. var item2 = document.querySelector('.pic');
  37. item.onblur = function() {
  38. if(this.value.length < 6 || this.value.length > 16) {
  39. item2.className = 'pic wrong';
  40. item2.innerHTML = '您输入的位数不对要求6~16位';
  41. } else {
  42. item2.className = 'pic right';
  43. item2.innerHTML = '您输入的正确!';
  44. }
  45. }
  46. </script>
  47. </body>





蓝蓝设计建立了UI设计分享群,每天会分享国内外的一些优秀设计,如果有兴趣的话,可以进入一起成长学习,请扫码蓝小助,报下信息,蓝小助会请您入群。欢迎您加入噢~~希望得到建议咨询、商务合作,也请与我们联系。

分享此文一切功德,皆悉回向给文章原作者及众读者.

转自:csdn
免责声明:蓝蓝设计尊重原作者,文章的版权归原作者。如涉及版权问题,请及时与我们取得联系,我们立即更正或删除。

蓝蓝设计www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 平面设计服务

分享本文至:

日历

链接

blogger

蓝蓝 http://www.lanlanwork.com

存档