• DOM操作 045


    一 什么是DOM


     

      DOM : 文档对象模型 它为文档提供了结构化表示 并定义了如何通过脚本来访问文档结构 . 目的就是为了能让js操作HTML元素而制定的一个规范 . 

      DOM树(一切都是节点): 

        元素节点 : HTML标签

        文本节点 : 标签中的文字(比如标签之间的空格 换行)

        属性节点 : 标签的属性

      DOM可以做什么 : 找对象(元素节点)  设置对象的值  设置元素的样式 动他创建和删除元素  事件的触发响应 : 事件源 事件 事件的驱动程序 

      获取DOM的方式:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div class="box" id="box">
            <p>alex</p>
        </div>
        <p class="box">吴老板</p>
    
        <script type="text/javascript">
            console.log(window);
            console.dir(document);
            console.log(document.documentElement);
            console.log(document.body)
            //1.通过id获取
            var oDiv = document.getElementById('box');
            console.log(oDiv);
        //    2.通过标签获取 获取是伪数组 多个DOM对象
            var oTag = document.getElementsByTagName('div')[0]; //HTMLCollection 伪数组 有数组的索引和length,但是没有数组的方法
            console.log(oTag);
            oTag.style.color = 'red';
        //    3.通过类名获取 获取的也是伪数组 多个DOM对象
            var oActives = document.getElementsByClassName('box');
            console.log(oActives);
            for(var i = 0; i < oActives.length; i ++){
                //样式设置
                oActives[i].style.backgroundColor = 'green';
            }
            //救命稻草
    
            var oD = document.querySelectorAll('div p')
            console.log(oD);
    
            oD.forEach(function (item,index) {
                console.log(item);
            })
    
    
        </script>
    
    </body>
    </html>

    二 DOM中的操作:

      1 js对值的处理:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div id="box">
            wusir
            <p>alex</p>
        </div>
        <input type="text" value="" id="user">
        <script>
            var oDiv = document.getElementById('box');
            // oDiv.innerText= '<h1>哈哈哈哈</h1>';
            // oDiv.innerHTML = '嘿嘿嘿嘿';
            // oDiv.innerHTML = '<h3>嘿嘿嘿</h3>'
    
            //只获取所有(当前标签和子标签)文本内容
            // console.log(oDiv.innerText);
            //获取父标签中所有的标签元素 (子标签,空格,换行,文本)
            console.log(oDiv.innerHTML);
            //设置value值  只适用于表单控件元素
            document.getElementById('user').value = 'alex';
            console.log(document.getElementById('user').value);
        </script>
    
    </body>
    </html>

      2 对 css 的操作:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .box {
                 200px;
                height: 300px;
                background-color: red;
            }
        </style>
    </head>
    <body>
    <div class="box"></div>
    <script>
        var oDiv = document.getElementsByClassName('box')[0];
    
        var isRed = true;
        oDiv.onclick = function () {
            if (isRed) {
                console.log(this.style);
                //this  谁做的事件操作 this指向谁
                this.style.backgroundColor = 'green';
                this.style.width = '400px';
                isRed = false;
            } else {
                this.style.backgroundColor = 'red';
                isRed = true;
            }
    
        }
    </script>
    
    </body>

      3 对标签属性操作:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .box {
                 200px;
                height: 300px;
                background-color: red;
            }
    
            #box {
                background-color: yellow;
            }
    
            .active {
                display: none;
            }
        </style>
    </head>
    <body>
    <button id="btn">切换</button>
    <div class="box"></div>
    <script>
        var oDiv = document.getElementsByClassName('box')[0];
        var oBtn = document.getElementById('btn');
        var isShow = true;
        //不等待
        oBtn.onclick = function () {
            if (isShow) {
                //   对id 对标签赋值id
                // oDiv.id = 'box';
                // oDiv.title = '哈哈哈';
                // console.log(oDiv.className); //box
                //设置类名的时候 一定要用className 因为class是个关键字
                oDiv.className = oDiv.className + ' active';
                isShow = false;
            }else{
                 oDiv.className = 'box';
                isShow = true;
            }
    
        }
        console.log(11111);
    
    </script>
    
    </body>
    </html>

      4 .img标签属性的操作:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            /*重置样式*/
            *{
                padding: 0;
                margin: 0;
            }
            .swiper{
                 1000px;
                height: 460px;
                margin: 0 auto;
                background-color: red;
                position: relative;
            }
            .swiper span{
                position: absolute;
                right: 0;
                top: 50%;
                 41px;
                height: 69px;
                background: green url("./icon-slides.png") no-repeat -125px 0;
            }
        </style>
    </head>
    <body>
        <div class="swiper">
            <span id="next"></span>
            <img src="./1.png" alt="" id="meinv">
        </div>
        <script>
            var oImg = document.getElementById('meinv');
            console.dir(oImg);
            var oNext = document.getElementById('next');
            oImg.onmouseover = function () {
                //this.src 获取的是DOM对象的属性
                //console.log(this.src); //绝对路径
                //获取出来的就是标签上的属性 通过getAttribute('');获取的标签上的属性
                console.log(this.getAttribute('src'));
                this.src = '1_hover.png';
                this.alt = '哈哈哈'
            }
            oImg.onmouseout = function () {
                this.src = '1.png'
                //console.log(this.getAttribute('src'))
            }
            oNext.onmouseover = function () {
                // console.log( this.style);
                this.style.backgroundPositionX = '-42px';
                this.style.backgroundPositionY = '0';
            }
        </script>
    </body>
    </html>

      5 .属性方法设置和获取

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div id="box">alex</div>
        <script>
            // document.getElementsByTagName('div')[0].setAttribute()
        </script>
    
    </body>
    </html>

      6 .对象属性和标签属性区分

     
    # 区分DOM对象属性 和 标签属性
    //this.src 获取的是DOM对象的属性
    console.log(this.src); //绝对路径
    //获取出来的就是标签上的属性 通过getAttribute('');获取的标签上的属性
    console.log(this.getAttribute('src'));
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="text" name="user" id="user">
    <img src="./1.png" alt="" id="aImg"><input type="radio" name="sex" checked="xxxxx" id="nan"><input type="radio" name="sex" id="nv">
    <script>
    
        function  $(idName) {
    
            return document.getElementById(idName);
        }
    
        var oInput = document.getElementById('user');
        var oImg = document.getElementById('aImg');
    
        console.dir(oInput);//DOM对象
        console.log(oInput.type);
        console.log(oInput.getAttribute('type'));
    
    
        console.dir(oImg);
        console.log(oImg.src);
        console.log(oImg.getAttribute('src'));
    
        console.log(  $('nan').checked); //对象的属性   单选框 提交后台 建议使用对象属性checked
        console.log(  $('nan').getAttribute('checked')); //标签上属性
    </script>
    
    </body>
    </html>
    View Code

        

  • 相关阅读:
    css中关于div中文本垂直居中的问题。
    点击弹出列表内容
    html+css+js实现滑动导航条(转载)
    在事件触发的时候,有时我们需要一些模拟用户行为的操作。例如:当网页加载完毕后 自行点击一个按钮触发一个事件,而不是用户去点击。
    活动倒计时案例
    javascript操作css实现弹出对话框
    PHP在不同页面之间传值的三种常见方式
    实现form表单提交到服务器,并且在将表单内容返回到该页面
    简单的百度预测搜索功能(php+jQuery+js+ajax)
    Eclipse4.6的一些基本操作及环境搭配
  • 原文地址:https://www.cnblogs.com/f-g-f/p/10016799.html
Copyright © 2020-2023  润新知