1、dom有5个属性,属性内容如下

下面开始介绍Dom属性,一共有5个属性

1、document object:文档对象

2、element object:标签对象

3、test object:文本对象

4、attribute object:属性对象

5、comment object:注释对象

  

2、dom导航方法

Dom下面的导航方法
    parentElement              父标签
    Children                   所有的子标签
    firstElementChild          第一个子标签
    lastElementChild           最后一个子标签
    nextElementSibling         下一个兄弟标签
    previousElementSibling     上一个兄弟标签

  

先看个实例

实例如下
    <a href="#">百度一下</a>
    <div id="div1">
        <div>hello div</div>
        <p>hello p</p>
    </div>
    <h1>hello h1</h1>
    <script>
        var ele = document.getElementById("div1")

        alert(ele.lastElementChild.nodeName)

        alert(ele.firstElementChild.nodeName)

        alert(ele.children)
        注意:这里返回的是一个数组,可以通过下面的方法循环打印
        var ele_sons = ele.children
        for (var i = 0;i <= ele_sons.length;i++){
            alert(ele_sons[i])
        }


        alert(ele.nextElementSibling.nodeName)

        alert(ele.previousElementSibling.nodeName)
    </script>

  

3、寻找对象的方式

3_1、全局查找

首先这是全局查找,在整个document中查找
    通过id属性查找标签,因为id是全网唯一的,所以返回的结果就是一个标签
    var ele = document.getElementById("div1")


    通过class属性查找标签
    var ele = document.getElementsByClassName("c1"),这里由于class属性不是全网唯一的,所以这里返回的不是一个标签,而是一个数据,计算class的标签
    只有一个,他也是一个数组,需要通过索引来取具体的标签

    通过标签的名字查找标签
    var ele3 = document.getElementsByTagName()
    通过标签名称查找的结果和class效果是一样的,都是一个数组

    通过name属性的值来查找标签,同样也是返回一个数组,这个用的不多,常用的是上面的三种
     var els3 = document.getElementsByName("sb")

  

3_2、局部查找

下面看下局部查找,就是查找指定标签下的标签
    把上面的document替换为指定的ele也是可以的,这个就是局部查找

    局部查找支持标签名称
            <div class="c1">
        <div id="c2">hello div
            <p>这是一个子标签的p标签</p>
        </div>

        <p class="c3" name="sb">hello p</p>
    </div>
        <script>
            var ele = document.getElementById("c2")
            var ele2 = ele.getElementsByTagName("p")
            在ele2下面查找p标签

            alert(ele2[0].innerText)

        </script>


    局部对象查找不支持id查找
      var ele3 = ele.getElementById("c4")
      alert(ele3.nodeName)

      这个会报错的
      Uncaught TypeError: ele.getElementById is not a function



    局部查找支持class查找
    var ele4 = ele.getElementsByClassName("c5")[0];
    alert(ele4.nodeName)



    局部查找不支持name属性查找
    var ele5 = ele.getElementsByName("c6")[0];
    alert(ele5.nodeName)

    这个会报错的
    Uncaught TypeError: ele.getElementsByName is not a function

  

 

4、Dom事件介绍

Dom中的事件,比如我们上面的例子onclick,鼠标点击就会触发onclick事件

    onclick事件:鼠标单击会触发事件
    ondblclick事件:鼠标双击会触发事件
    onfocus事件:元素获得焦点的时候触发的事件,比如一个input输入框,当把鼠标点击输入框,输入就会获得焦点
    onblur事件:元素失去焦点的时候触发的事件


    下面用input标签写一个例子,默认input标签中有默认值,鼠标点击,默认值去掉,鼠标离开,默认值恢复
    <input class="text" type="text" value="默认值" onfocus=func5() onblur=func6()>

    javascript的代码
        function func5() {
            var ret = document.getElementsByClassName("text");
            ret[0].value = "";
        }
        function func6() {
            var ret = document.getElementsByClassName("text");
            ret[0].value = "默认值";
        }



    onchange事件:一般用select标签中,如果select选中的标签被更改,则会触发该事件
    <select onchange=func8()>
            <option>背景</option>
            <option>广州</option>
            <option>深圳</option>
            <option>湖南</option>
            <option>内蒙古</option>
    </select>


    onkeydown事件:按下键盘中的一个键触发的事件,比如我们按回车触发提交
    <input type="button" value="键盘触发" onkeydown="func9()">


    keycode事件:按下指定的键盘中的某个键触发的事件,用的时候自己查文档吧


    onkeydown事件:键盘某个键被按下触发的事件

    onkeyup事件:键盘某个键被松开触发的事件

    onkeypress事件:键盘某个键被按下然后松开触发的事件

    onload事件:一张页面或者一张图加载完成触发的事件

    onmousedown事件:鼠标按下触发的事件

    onmousemove事件:鼠标在标签的范围内移动就会触发的事件

    onmouseout事件:鼠标离开区域,就会触发事件

    onmouseover事件:鼠标进入区域,就会触发事件


    onsubmit事件:这个事件必须给form标签绑定,submit标签提交数据的时候触发的事件,就比如我们向后台提交数据,前台先做校验,通过则提交,不通过则不让往后台提交,不通过则
    return false阻止往后台提交数据

    <form action="#" method="post" onsubmit=func1(event)>
        姓名:<input id="id1" type="text" name="username">
        年龄:<input id="id2" type="text" name="age">
        <input type="submit" value="提交">
    </form>


    javascript代码,有两种方法来实现
        function func1(event) {

        alert("验证失败")
        event.preventDefault()
//        阻止默认的行为

    }

    第二种方法
    <form action="#" method="post" onsubmit="return func2()">
        姓名:<input id="id3" type="text" name="username">
        年龄:<input id="id4" type="text" name="age">
        <input type="submit" value="提交">
    </form>


    javascript代码
    function func2() {
        alert("验证失败");
        return false;
    }


    stoppropation事件:一般用在div标签中,阻止事件的延生,比如下面的例子
        <div id="div1" onclick="func3()">
        <div id="div2" onclick="func4()"></div>
    </div>

    在这个代码中,点击id为div2的标签会弹出div2和div1,但是如果我们想点击div2的时候只弹出div1,该怎么办呢?
    function func3() {
        alert("div1")
    }

    function func4() {
        alert("div2")
    }

    下面这个例子中使用


    <div id="div1" onclick="func3()">
        <div id="div2" onclick="func4(event)"></div>
    </div>

    在下面的代码中,点击id为div2的标签不会弹出div1的事件
    function func4(event) {
        alert("div5")
        event.stopPropagation()
    }

  

5、Dom实现增删查标签的效果

  5_1、先看下如何增删标签

增
    只能通过一个父标签,然后通过这个父标签添加子标签
    createElement()创建标签
    appendChild()添加标签到指定的父标签的下面



删
    只能通过一个父标签,然后通过这个父标签去删除子标签

    removeChild():删除指定的子标签




    下面的例子使用添加标签和删除标签的作用
     <div id="div1">
        <div id="div2">hello div2</div>
        <p>hello p</p>
    </div>
    <input type="button" value="添加标签" onclick="func1()">
    <input type="button" value="删除标签" onclick="func2()">


    <script>
        增加标签的函数
        function func1() {
            var father_ele = document.getElementById("div1");
            var son_ele = document.createElement("p");
            son_ele.innerText = "被添加的p标签";
            son_ele.style.fontSize = "20px";
            father_ele.appendChild(son_ele);
        }
        删除标签的函数
        function func2() {
            var father_ele = document.getElementById("div1");
            var remove_ele = father_ele.lastElementChild;
            father_ele.removeChild(remove_ele);
        }
    </script>

  5_2、在来看下如何修改标签

首先修改标签的文本内容

    改变文本内容
            son_ele.innerHTML = "<a href='www.baidu.com'>百度一下</a>";
            这个出来的效果是a标签,可以解析HTML标签

            son_ele.innerText = "<a href='www.baidu.com'>百度一下</a>";
            这个出来的效果是单纯的字符串,所以innerText只能添加文本,不会解析HTML标签

  

在来看下如何修改css样式

    改变css的样式

            我们可以做这样一个例子,鼠标点击事件会把字体的名字变大,或者变小,如果字体大小为10px,则把字体大小修改为30px,如果字体大小为30px,则修改字体大小为10px

            <p id="p1" onclick="func3()">测试修改字体属性</p>

            function func3() {
            var ele = document.getElementById("p1");

            if(ele.style.fontSize == "30px"){
                ele.style.fontSize = "10px";
            }else {
                ele.style.fontSize = "30px";
            }
        }

  

我们还可以直接修改class属性的值

直接修改class属性
    a、首先定义一个css样式
        .big{
            color: red;
            font-size: 30px;
        }
    b、然后写html代码
    <p id="p2" onclick="func4()">测试直接修改class属性</p>

    c、然后写javascript代码
        function func4() {
            var ele = document.getElementById("p2");
            alert(ele.classList);
            查看ele的class的信息

            ele.classList.add("big");
            添加class属性

            alert(ele.classList)

            ele.classList.remove("big")
            删除class属性

            alert(ele.classList)
        }

  

posted on 2018-03-27 23:27  bainianminguo  阅读(227)  评论(0编辑  收藏  举报