美文网首页
DOM基础1

DOM基础1

作者: GL曲终人散 | 来源:发表于2019-10-20 16:14 被阅读0次

注意:案例部分代码大部分是选取关键性代码,需要把代码放入对应位置

一、DOM概念

1.JavaScript组成

(1)ECMAScript标准——代码的基本规范
(2)DOM——文档对象模型
(3)BOM——浏览器对象模型

2.DOM

(1)DOM是Document(文档)Object(对象) Model(模型)的缩写
(2)DOM是一套操作HTML和XML文档的API,就是操作页面元素

  • HTML文件侧重于展示数据
  • XML文件侧重于存储数据

(3)整个页面是一个对象,每个标签和文字内容包括空白都可以看成是一个一个的对象,这些对象组成了一个树状图模型
(4)

  • DOM就是把HTML视为一个层次结构(树形结构)的文档(范围从大到小)
  • 文档(Document):就是指HTML或者XML文件,是顶级对象
  • 文档元素(根元素):文档中的第一个元素,HTML文档元素就是<html>
  • 节点(Node):HTML文档中的所有内容都可以称之为节点
  • 元素(Element):HTML文档中的标签可以称为元素,元素称为对象
  • 父元素:一个标签内部还有其他的标签
  • 子元素:在一个父元素中的标签
  • 父元素和子元素之间是一个层级关系(包含关系)

(5)DOM的级别

  • DOM0 初级阶段
  • DOM1 规定了节点的类型Node——————目前用的
  • DOM2:新增了一些方法,但是很多浏览器并不支持
  • DOM3:大多数浏览器都没有支持

3.其它

(1)DOM可以操作页面:

  • 找元素(标签)--对象
  • 操作这个标签(属性,样式)
  • 创建标签,删除标签

(2)事件

  • 触发和响应
  • 事件源(事件的触发者)
  • 响应的程序----事件处理程序

二、DOM应用注意

1.设置或获取文字内容——innerText或innerHTML

如果是设置或获取的是文字内容用innerText或者innerHTML都可以.如果设置或获取的是含有标签内容innerHTML

(1)innerText或textContent——文字内容

对象.innerText=值——低版本火狐不支持
对象.textContent=值——低版本ie不支持

(2)innerHTML——文字内容或标签内容,且没有兼容问题

代码:

    <body>
    <input type="button" value="显示效果" id="btn"/>
    <div id="dv">
        <p>为什么我拒绝了呢,因为是一个梦</p>
    </div>
    <script>
        function my$(id) {
            return document.getElementById(id);
        }
        //点击按钮在div中显示一个p标签内容
        my$("btn").onclick=function () {
            my$("dv").innerText="哈哈";//(1)
            my$("dv").innerHTML="哈哈";//(2)
            my$("dv").innerText="<p>这是一个p</p>";//(3)
            my$("dv").innerHTML="<p>这是一个p</p>";//(4)
            
        };
    </script>
    </body>

(1)(2)(3)(4)要分别执行
结果:

  • 设置文字内容:————没有区别

    (1) image.png
    (2) image.png
  • 设置标签内容:————innerHTML会解析语句(<p>这是一个p</p>),innerText不会
    (3) image.png
    (4) image.png

2.CSS多个单词组合的属性

凡是在CSS样式属性中是由多个单词组合的属性要是在JS(DOM)操作中,单词中间的-去掉,后面单词的首字母大写.
如:background-color写为backgroundColor

3.给标签修改class——不能使用class,需要使用className

center top修改为center botm
案例见 三-5

(1)重写

对象.className="center botm";

(2)替换

对象.className=对象.className.replace("top","botm");

4.html标签中,如果一个属性和属性的值是相同的,那么在DOM操作中,该属性值为布尔类型

1.如果想选中,则设置值为true,如果不想选中,则设置该属性值为false
2.常见的比如:

  • input标签:disabled禁用属性
  • input标签中的单选按钮和复选框:checked默认选中属性
  • 下拉框select标签中的option标签:selected默认选中属性

3.判断未被选中,比如disabled是否被禁用

  • 代码:
    //未被选中
    if(!对象.checked){
       
    }
    //被选中
    if(对象.checked){
       
    }

4.案例见: 三— 8

5.图片的宽度和高度

1.可以直接 对象.width对象.height不需要加px
2.如果设置图片的宽和高,通常都使用 对象.style.width对象.style.height需要加px

三、理解DOM操作——了解即可

       在页面中通过DOM操作页面中元素的时候,页面中的元素的样式或者显示方式发生了改变,但是并没有修改原来的页面内容,而是修改的当前这个页面的样子,换句话说:
       通过网址访问的页面,访问的是服务器端的页面,通过网络,把服务器的页面下载到我们的本地,然后加载到内存中,渲染引擎在加载页面的同时会在内存中生成一个DOM树
       所以,DOM操作的是本地内存中的内容,并不会更改服务器端的页面样子

图片分析:


image.png

四、DOM案例

1.封装 根据id选取元素的方法——为学jQuery打基础——重要

    <body>
    <input type="button" value="设置div" id="btn"/>
    <div id="dv"></div>
    <script>
        /**
         * 封装 根据id选取元素的方法
         * @param id
         * @returns {Element}
         */
        function my$(id) {
            return document.getElementById(id);
        }
        
        //获取按钮——调用封装方法
        my$("btn").onclick=function () {
            //设置div的样式  --宽--高,--背景颜色---设置边框
            my$("dv").style.width="300px";
            my$("dv").style.height="200px";
            my$("dv").style.backgroundColor="yellow";
            my$("dv").style.border="2px solid red";
        };
    </script>
    </body>

2.行内js和内联js

    <body>
    <input type="button" value="点我" onclick="alert('哈哈,我又变帅了');" />
    <input type="button" value="再点我" onclick="f1();"/>
    <script>
        function f1() {
            alert("又被点了");
        }
    </script>
    </body>

3.事件调用函数两种方式

(1)命名函数——不常用

    <body>
    <input type="button" value="再次点我" id="btn" />
    <script>
        //获取的就是一个元素
        //通过document.getElementById("id的值"),返回的就是这个id值的(标签)元素(对象)
        var btnObj=document.getElementById("btn");
        btnObj.onclick=f1;//此时的f1叫事件处理函数
        function f1() {
            alert("你干啥捏?");
        }
    </script>
    </body>

(2)匿名函数——常用

    <body>
    <input type="button" value="再次点我" id="btn" />
    <script>
        //获取的就是一个元素
        //通过document.getElementById("id的值"),返回的就是这个id值的(标签)元素(对象)
        var btnObj=document.getElementById("btn");
        btnObj.onclick=function () {
            alert("你干啥捏?");
        }
    </script>
    </body>

4.点击按钮修改超链接的地址及热点文字

(1)据id获取按钮,为按钮注册一个点击的事件,在该事件中根据id获取超链接,修改超链接的href属性(地址)
(2)修改成对的标签中的文字内容,可以用对象.innerText="值";
(3)注册事件的时候,后面的匿名函数:事件处理函数

    <body>
    <input type="button" value="修改超链接" id="btn"/>
    <a href="http://www.baidu.com" id="ak">百度</a>
    <script>
        document.getElementById("btn").onclick = function () {
            //修改地址
            var aObj = document.getElementById("ak");
            aObj.href = "http://www.itcast.cn";
            aObj.innerText="传智播客";
        };
    
    </script>
    </body>

5.点击按钮,按钮显示哈哈,其它显示呜呜——遍历、排他的方法

排他的方法:先设置所有,在设置独特
遍历:循环遍历所有的按钮,每一个都要注册点击事件

    <body>
    <input type="button" value="呜呜"/>
    <input type="button" value="呜呜"/>
    <input type="button" value="呜呜"/>
    <input type="button" value="呜呜"/>
    <input type="button" value="呜呜"/>
    <script>
        //获取所有的按钮
        var btnObjs=document.getElementsByTagName("input");
        //循环遍历所有的按钮,每一个都要注册点击事件
        for(var i=0;i<btnObjs.length;i++){
            btnObjs[i].onclick=function () {
                //第一步:让每一个按钮先都变成呜呜
                for(var j=0;j<btnObjs.length;j++){
                    btnObjs[j].value="呜呜";
                }
                //第二步:设置当前被点的按钮值为哈哈——排他
                this.value="哈哈";
            };
        }
    </script>
    </body>

6.二维码的显示与隐藏——部分代码

<body>
<script>
    var aObj=divObj.getElementsByTagName("a")[0];
    //为a标签注册鼠标进入的事件.onmouseover
    aObj.onmouseover=function () {
        //让id为er的div显示出来
        //方法1
        //document.getElementById("er").className="erweima show";
        //方法2
        document.getElementById("er").className=document.getElementById("er").className.replace("hide","show");
    };

    //为a标签注册鼠标离开的事件.onmouseout
    aObj.onmouseout=function () {
        //让id为er的div隐藏起来
        //方法1
        //document.getElementById("er").className="erweima hide";
        //方法2
        document.getElementById("er").className=document.getElementById("er").className.replace("show","hide");
    };


</script>
</body>

7.点击按钮,显示和隐藏div——根据按钮的值来判断当前状态

    <body>
    <input type="button" value="隐藏" id="btn"/>
    <div id="dv"></div>
    <script>
    
        document.getElementById("btn").onclick=function () {
            //获取div
            var dvObj=document.getElementById("dv");
            if(this.value=="隐藏"){
                dvObj.style.display="none";
                this.value="显示";
            }else if(this.value=="显示"){
                dvObj.style.display="block";
                this.value="隐藏";
            }
        };
    
    </script>
    </body>

8.选择性别——点击按钮设置女被选中

在html标签中,如果一个属性和属性的值是相同的,那么在DOM操作中,该属性值为布尔类型,如果想选中,则设置值为true,如果不想选中,则设置该属性值为false

    <body>
    <input type="button" value="选中性别" id="btn"/><br/>
    <input type="radio" value="man" name="sex"/>男
    <input type="radio" value="woman" name="sex" id="rao" />女
    <input type="radio" value="baomi" name="sex"/>保密
    <script>
    
        //点击按钮设置女被选中
        function my$(id) {
            return document.getElementById(id);
        }
        //获取按钮注册点击事件=事件处理函数
        my$("btn").onclick=function () {            
            my$("rao").checked=true;
        };
    </script>
    </body>

9.点击按钮设置下拉框中选项选中

设置天津被选中
my$("s1").getElementsByTagName("option")[3]表示在返回的数组中找到下标为3的那个

    <body>
    <input type="button" value="选中某一项" id="btn"/>
    <select id="s1">
        <option value="1">北京</option>
        <option value="1">上海</option>
        <option value="1">重庆</option>
        <option value="1">天津</option>
        <option value="1">吉林</option>
    </select>
    <script>
        function my$(id) {
            return document.getElementById(id);
        }
        my$("btn").onclick=function () {
              my$("s1").getElementsByTagName("option")[3].selected=true;
        };
    </script>
    </body>

相关文章

  • Dom基础1

    DOM基础 DOM简介、DOM标准、DOM节点 获取元素的子节点:childNodes、兼容性问题火狐不兼容,可以...

  • DOM基础1

    注意:案例部分代码大部分是选取关键性代码,需要把代码放入对应位置 一、DOM概念 1.JavaScript组成 (...

  • HTML DOM基础解析

    DOM基础知识 1. HTML DOM简介 DOM 是 Document Object Model(文档对象模型)...

  • JavaScript--DOM基础

    JavaScript--DOM基础 一、DOM查找方法 1.document.getElementById()语法...

  • jQuery基础(2)

    (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...

  • 19.DOM 进阶

    学习要点: 1.DOM 类型2.DOM 扩展3.DOM 操作内容 DOM 自身存在很多类型,在 DOM 基础课程中...

  • DOM基础知识

    DOM基础知识 1、DOM?页面操作 2、浏览器的兼容性?IE、FF、Chrom 3、DOM节点 1)childN...

  • per-courseDOM介绍

    DOM 文档对象模型 D 表示文档,DOM的物质基础O 表示对象,DOM的思想基础M 表示模型,DOM的方法基础...

  • DOM基础整理 - 1

    1 通过HTML DOM,可访问JavaScript HTML文档的所有元素。 2 HTML DOM(文档对象模型...

  • Vue3+TS Day19 - Vue源码理论、编译器、渲染器、

    一、Vue源码理论基础 1、DOM是什么的简称?DOM和js之间的关系? 【DOM】Document Object...

网友评论

      本文标题:DOM基础1

      本文链接:https://www.haomeiwen.com/subject/wzhamctx.html