[暑假] DOM实践运用

1. 什么是DOM?

文档对象模型(Document Object Model, 简称 DOM), 是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口

2. DOM作用:

                由W3C已经定义了一系列的DOM接口, 通过这些DOM接口可以改变网页的内容, 机构和样式.  

        说白了DOM就是用来处理网页的

文档: 一个页面就是一个文档, DOM中使用document表示

元素: 页面中所有的标签都是元素, DOM中使用 element 表示

节点: 网页中所有内容都是节点 (标签, 属性, 文本, 注释等), DOM中使用node表示

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

3. 我们如何获取页面中的元素?

    有四种方法:

                根据ID获取

                根据标签名获取

                通过HTML5新增的方法获取

                特殊元素获取

4.介绍 getElementById()

        方法getElementById(),返回的是一个元素对象

<!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>
<body>
    <div id="time">2019-9-9</div>
    <script>
      var times = document.getElementById('time');
    //   console.log(times);
    //   console.log(typeof times);

    //   console.dir  打印我们返回的元素对象 更好的查看里面的属性和方法
    console.dir(times);
    </script>
</body>

</html>

5.介绍getElementByTagName() 方法

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

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

6. 介绍element.getElemenntsByTagName('标签名');

        根据标签名获取:

                还可以获取某个元素(父元素)内部所有指定标签名的子元素

             element.getElemenntsByTagName('标签名');

其中 父元素必须是单个对象(必须指明是哪一个元素对象). 获取的时候不包括父元素自己

<!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>
<body>
    <ul>
        <li>加油</li>
        <li>从今天开始变得更好</li>
        <li>不怕吃苦</li>
        <li>我们都可以坚持</li>
        <li>不怕困难</li>
        <li>我们总能克服</li>
    </ul>
    <script>
        //返回的是 获取过来元素对象的集合  都是以伪数组的形式存储的 
       var arr = document.getElementsByTagName('li');
      // console.log(arr);
    //    console.log(arr[0]);

    //    2.我们想要依次打印里面的元素对象 我们可以采取遍历的方式
        for (var i = 0; i < arr.length; i++) {
            console.log(arr[i]);
        }
        // 3.如果页面中只有一个li 返回的还是伪数组的形式
        // 4.如果页面中没有这个元素 返回的还是空的伪数组的形式
   </script>
    
</body>
</html>

7.H5新增获取元素方式

<!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>
<body>
    <div class="box1">饭盒1</div>
    <div class="box">饭盒2</div>
    <div id="nav">
        <ul>
            <li>加油</li>
            <li>从今天开始变得更好</li>
            <li>不怕吃苦</li>
            <li>我们都可以坚持</li>
            <li>不怕困难</li>
            <li>我们总能克服</li>
        </ul>
    </div>
 
    <script>
    //   1. getElementsByClassName() 根据类名获得某些元素集合
    var boxs = document.getElementsByClassName('box1');
    console.log(boxs);
    // 2. querySelector 返回指定选择器的第一个元素对象 切记 里面的选择器需要加符号
    var firstBox = document.querySelector('.box')
    // 3.querySelectorAll() 返回指定选择器的所有元素对象集合
    var allBox = document.querySelectorAll('.box');
    // 4.获取body 元素
    var bodyEle = document.body;
    console.log(bodyEle);
    // 5.获取HTML元素
    var HTMLEle = document.documentElement;
    console.log(HTMLEle);
   </script>
    
</body>
</html>

8.什么是事件?

所谓事件 说白了就是  触发然后响应的机制 

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

          1)   事件的组成

                  1. 事件源: 就是事件被触发的对象 ==>简单理解就是谁被触发了

                2.事件类型: 就是如何触发   比如:鼠标点击(onclick) 还是鼠标经过  还是键盘按下

                3.事件处理程序: 通过一个函数赋值的方式完成

<!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>
<body>
    <button id="btn">学起来</button>
    <script>
            // <!--       1. 事件源: 就是事件被触发的对象 ==>简单理解就是谁被触发了 -->
                    var btn = document.getElementById('btn');    
            // <!--       2.事件类型: 就是如何触发   比如:鼠标点击(onclick) 还是鼠标经过  还是键盘按下 -->
            // <!--       3.事件处理程序: 通过一个函数赋值的方式完成 -->
                    btn.onclick = function() {
                        alert('你一定可以');
                    } //这是一个最简单的事件
    </script>

</body>
</html>

           2) 执行事件的步骤

                        1.获取事件源

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

                        3. 添加事件处理程序 (采取函数复制形式)

<!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>
<body>
    <div>123</div>
  <script>
    var div = document.querySelector('div'); //事件源
    
    div.onclick = function() {    //其中的 div.onclick叫做事件绑定
                                 // 整个叫做添加函数处理程序
        alert('我被选中了');
    }
  </script>
</body>
</html>

               3) 常见的鼠标事件

                

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

9.操作元素(DOM中核心重点)

        JavaScript的DOM操作可以改变网页内容, 结构和样式, 我们可以利用DOM操作元素改变元素里面的内容, 属性等. 

               1.改变元素内容

                        element.innerText

                从起始位置到终止位置的内容, 但它不包括HTML标签, 而且空格和换行也会去掉

                       element.innerHTML

                 从起始位置到终止位置的全部内容, 包括html标签, 通识保留空格和换行

                       

               2.innerText 和 innerHTML的区别:

                                重点就一句话: innerHTML推荐使用

以下为进一步解释:

1.innerText 不识别HTML标签 不是W3C规定的标准   同时去除空格和换行

                           

2. innerHTML可以识别HTML标签  也是W3C规定的标准  保留空格和换行

<!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>
<body>
    <div></div>
    <p>
        我爱坚持 因为坚持很酷
        <span>变得优秀只是第一步</span>
    </p>
    <script>
        // 1.innerText 不识别html标签 非标准
        var div = document.querySelector('div')
        // div.innerText = '<strong> 会变成粗体吗</strong> 不会';

        
        // 2. innerHTML 可以识别html标签  且是W3C的标准
        div.innerHTML = '<strong> 会变成粗体吗</strong> 会';

        var p = document.querySelector('p');
        console.log(p.innerText);  // innerText会消除空格 和 换行
        console.log(p.innerHTML); // innerHTML不会消除空格 和 换行
    </script>
    
</body>
</html>

                 3.修改元素属性

                

<!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>
<body>
    <button id="sky">天空</button>
    <button id="hard">努力</button>
    <img src="js.jpg" alt="" title="天空">

    <script>
        // 1.获取事件源
        var sky = document.getElementById('sky');
        var hard = document.getElementById('hard');
        var img = document.querySelector('img');
        // 2.注册事件 // 3.添加事件处理程序
        sky.onclick = function () {
            img.src = 'js.jpg';
        }
        hard.onclick = function () {
            img.src = '项目.jpg';
        }
       
    </script>
    
</body>
</html>

                4.修改表单中的属性

                 innerHTML这个是用来修改 普通盒子 比如 div标签里面的内容的

                而表单元素里面的值  文字内容是通过value来修改

<!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>
<body>
    <button>按钮</button>
    <input type="text" value="输入内容">
    
    <script>
        // 1.获取事件源
        var btn = document.querySelector('button');
        var input = document.querySelector('input');
        // 2.注册事件  3.添加事件处理程序
        btn.onclick = function () {
            input.value = '从今天开始我要优秀';
            // 如果想要某个表单被禁用 不能再点击 disabled 我们想要这个按钮 button禁用
            btn.disabled = true;
        }
    </script>
</body>
</html>

                5. element.属性  是可以获取内置属性值 (就是元素本身自带的属性)

                     element.getAttribute('属性');   主要是获取自定义属性(标准) 就是我们程序员自己定义的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值