Web API:DOM-获取元素、事件基础、操作元素

目录

1. web APIs 和JS基础关联性

1.1 JS 的组成

1.2 API 和 Web API

1.2.1 API

1.2.2 Web API

1.2.3 总结

2. DOM

2.1 DOM 简介

2.1.1 DOM 数

3. 获取元素

3.1 ID获取

3.2 标签名获取

3.3 HTML5 新增方法获取

3.4 特殊元素获取

4. 事件基础

4.1 事件概述

4.2 事件三要素

​4.3 执行事件的步骤

4.3.1 常见的鼠标事件

5. 操作元素

5.1 改变元素的内容

5.2 常用元素的属性操作

5.3 分时间问候案例

5.4 修改表单属性

​5.4.1 仿京东显示密码的案例

5.5 样式属性操作

5.5.1 关闭二维码案例

5.5.2 循环精灵图案例

5.5.3 显示隐藏文本框内容

 5.5.4 用className修改样式属性

​5.5.5 密码框验证信息案例

5.6 操作元素总结


1. web APIs 和JS基础关联性

1.1 JS 的组成

  • JavaScript由以下三部分组成
  • ECMAScript: JavaScript的语法(JavaScript基础)
  • DOM:页面文档对象模型 (Web APIs)
  • BOM: 浏览器对象模型(Web APIs)
  1. JS基础阶段:掌握ECMAScript标准语法 ,做不了网页交互,为JS打基础,做铺垫
  2. Web APIs阶段:是w3c的基础,是JS独有的部分,主要学习DOM和BOM,可以实现页面交互功能

web APIs 是JS的应用,大量使用JS基础语法做交互效果

1.2 API 和 Web API

1.2.1 API

API(application programming interface 应用程序编程接口)是一些预先定义的函数,目的是提供开发人员基于软件或者硬件得到访问一组例程的能力,而无需访问源码,理解内部工作机制的细节

简单理解:API 是给程序员提供的一种工具,以便可以轻松的完成需要的功能

1.2.2 Web API

是浏览器提供的一套操作浏览器功能页面元素的API(BOM 和 DOM),主要是做交互效果

1.2.3 总结

1.API 是我们开发的一个接口,帮助实现功能,会使用就行

2.web API 一般都有输入输出(函数的传参和返回值),web API 很多都是方法(函数)

3.学习Web API可以结合学习对象方法的思路学习

2. DOM

2.1 DOM 简介

文档对象模型(document object model),是w3c组织推荐的处理可拓展标记语言(html或者xml)的标准编程接口。可以改变网页的内容、结构、样式

2.1.1 DOM 数

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

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

3. 获取元素

3.1 ID获取

var element = document.getElementById(id);

  •  页面从上往下执行,所有script标签写在标签的下面
  • id是大小写敏感的字符串,代表了所要查找的元素的唯一ID
  • 返回值:返回的是元素对象

3.2 标签名获取

Document.getElementsByTagName()

  •  返回带有指定标签名的对象的集合,以伪数组的形式存储,操作元素需要遍历
  • 得到的元素是动态的,内容变也会跟着变
  • 如果页面只有一个元素,也是伪数组形式返回,空的也是元素为空的伪数组

 获取某个元素(父元素)的指定字标签:

element.getElementsByTagName(‘标签名’)

 父元素必须是单个对象(必须指定哪一个元素的对象),获取不包括父元素

3.3 HTML5 新增方法获取

1. getElementsByClassName()

document.getElementsByClassName('类名’) // 根据类名返回元素对象集合

2. document.querySelector()

document.querySelector(‘选择器’)  // 根据指定选择器返回第一个元素对象

 注意:里面的选择器需要加符号 id加. 类加 #

 3. Document.querySelectorAll()

Document.querySelectorAll(‘选择器’)  根据选择指定返回所有元素对象集合

3.4 特殊元素获取

特殊元素 body、html、元素等

1. body 标签获取

var bodyEle = document.body;

2. html 元素获取

  var h = document.documentElement

4. 事件基础

4.1 事件概述

JavaScript 创建动态页面,而事件可以被JavaScript 侦测到的行为

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

网页中每个元素都可以产生可以触发JavaScript的事件,如点击按钮实现某个操作

4.2 事件三要素

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

  • 事件源:事件被触发的对象,谁,按钮
  • 事件类型:如何触发,如:鼠标点击onclick,经过,按键
  • 事件处理程序:通过一个函数赋值方式 完成

4.3 执行事件的步骤

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

 

4.3.1 常见的鼠标事件

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

5. 操作元素

操作原始可以改变网页内容、结构、样式,元素里面的属性等

5.1 改变元素的内容

1、element.innerText = (非标准)

 从开始位置到终止位置的内容,但不识别html标签,同时空格和换行也会去去掉

2、element.innerHTML = (w3c标准,使用较多)

 起始位置到终止位置,识别html标签,同时保留空格和换行

 这两个属性是可以读写的,可以获取元素里面的内容

5.2 常用元素的属性操作

  1. innerText、innerHTML
  2. scr、href
  3. id、alt、title

 

5.3 分时间问候案例

案例:根据不同时间问候

  1. 分析:根据系统不同时间来判断,用到日期对象
  2. 利用多分支语句来设置不同的图片
  3. 需要一个图片,根据时间修改图片,用来scr属性
  4. 需要div元素,显示不同问候语,修改元素内容

5.4 修改表单属性

DOM可以操作如下元素的表单属性:

type、value、checked、selected、disabled

 注意:表单里面的值是通过value来修改的,用innnerHTML修改不了

5.4.1 仿京东显示密码的案例

 案例:点击按钮将密码框切换为文本框,并可以查看密码明文

  1. 核心思路:点击按钮,把密码框类型改文本框,就可以看见密码了
  2. 一个按钮有两个状态,点击一次,切换文本框,继续点击切换密码框
  3. 算法:利用flag变量,判断flag值,flag设置为0,o密码框,1文本框
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 800px;
            height: 75px;
            border-bottom: 1px solid #ccc;
            margin: 100px auto;
        }

        .box input {
            width: 300px;
            height: 30px;
            border: 0px solid black;
        }

        img {
            width: 24px;
        }
    </style>
</head>

<body>
    <div class="box">
        <span>密码:</span>
        <label for="">
            <img src="images/close.jpeg" alt="">
        </label>
        <input type="password" id="pwd">
    </div>
    <script>
        var pwd = document.getElementById('pwd');
        var imgs = document.querySelector('img');
        // 处理
        var flag = 0;
        imgs.onclick = function () {
            // 点击加一
            if (flag == 0) {
                pwd.type = 'text';
                imgs.src = 'images/open.jpeg';
                flag = 1;
            } else {
                pwd.type = 'passsword';
                imgs.src = 'images/close.jpeg';
                flag = 0;
            }

        }
    </script>
</body>

</html>

5.5 样式属性操作

通过js修改元素的大小,颜色,位置

element. style   行内样式操作

element. className   类名样式操作

 前者在修改样式少或者功能简单下使用

 注意:JS的样式命名采用驼峰命名法

JS 修改style 样式操作,产生的是行内样式,css权重比较高;

5.5.1 关闭二维码案例

  • 核心思路:用样式的显示和隐藏完成,display.none,display.block
  • 点击按钮,让二维码的盒子隐藏
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>

</style>

<body>
    <div class="box">
        <img src="images\taobao.png" alt="">
        <i> × </i>
    </div>
    <script>
        var box = document.querySelector('.box');
        var closes = document.querySelector('i');
        closes.onclick = function () {
            box.style.display = 'none';
        }
    </script>
</body>

</html>

5.5.2 循环精灵图案例

  • 分析:图片排列是有规律的
  • 核心思路:用for循环,修改精灵图的背景位置 background-position
  • 循环里面的 i 索引号*44就是每个图标的y位置
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        ul {
            width: 140px;
            margin: 100px auto;
        }

        li {
            float: left;
            list-style: none;
            width: 24px;
            height: 24px;
            margin: 5px 5px;
            background-color: rgb(220, 168, 168);
            background: url(images/sprite.png) no-repeat;
        }
    </style>

</head>

<body>
    <div class="box">
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
    <script>
        var lis = document.querySelectorAll('li');

        for (var i = 0; i < lis.length; i++) {
            var index = i * 44;
            lis[i].style.backgroundPosition = '0 -' + index + 'px'; //0-44 px
        }
    </script>
</body>

</html>

5.5.3 显示隐藏文本框内容

表单需要2个新的表单事件,获得焦点onfocus,失去焦点onblur

获得焦点,判断表单内容是否为默认内容,如果是则清空内容

失去焦点,判断表单内容是否为空,为空则显示默认内容

 5.5.4 用className修改样式属性

element. className   类名样式操作

  • 修改较多属性下使用
  • 会直接更改元素类名,会覆盖原先的类名
  • 保留原先的类名:element. className=‘原先类 修改类’

5.5.5 密码框验证信息案例

案例:用户输入密码框,输入个数不是6-10,则提示错误信息

  • 分析:判断事件是失去焦点onblur
  • 如果输入正确,则提示正确信息,颜色为绿色,小图标变化
  • 如果输入错误,则提示错误信息,颜色为红色,小图标变化
  • 里面样式较多,采用className修改样式
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 600px;
            margin: 100px auto;
        }

        .message {
            display: inline-block;
            font-size: 12px;
            color: #999;
            background: url(images/mess.png) no-repeat left center;
            padding-left: 20px;
        }

        .wrong {
            color: red;
            background-image: url(images/wrong.png);
        }

        .right {
            color: green;
            background-image: url(images/right.png);
        }
    </style>
</head>

<body>
    <div class="register">
        <input type="password" class="ipt">
        <p class="message">请输入6~16位密码</p>
    </div>
    <script>
        var ipt = document.querySelector('.ipt');
        var msg = document.querySelector('.message');
        ipt.onblur = function () {
            if (this.value.length < 6 || this.value.length > 16) {
                msg.className = 'message wrong';
                msg.innerHTML = '您输入的密码长度错误';
            } else {
                msg.className = 'message right';
                msg.innerHTML = '您输入正确';
            }
        }
    </script>
</body>

</html>

5.6 操作元素总结

操作元素有:

  • 操作元素内容:innnerHTML、innnerText
  • 操作常见的元素属性:src、href、title、alt
  • 操作表单元素属性:type、value、disabled
  • 操作元素样式属性:element. style、className
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值