s14 dom笔记

DOM

____oldboy python s14

- 简介:

    - 文档对象模型(Document Object Model,简称DOM)
    - W3C组织推荐的处理可扩展置标语言的标准编程接口
    - 与平台和语言无关的应用程序接口(API)
    - 可以动态地访问程序和脚本,更新其内容、结构和www文档的风格


1、找到标签

    a. 直接找
        document.getElementById('i1')                  根据ID获取一个标签(单个元素)
        document.getElementsByName                  根据name属性获取标签集合
        document.getElementsByClassName('c1')         根据class属性获取标签集合(列表)
        document.getElementsByTagName('div')        根据标签名获取标签集合(列表)
    
    b. 间接
        tag = document.getElementById('i1')
        
        parentElement           // 父节点标签元素
        children                // 所有子标签
        firstElementChild       // 第一个子标签元素
        lastElementChild        // 最后一个子标签元素
        nextElementtSibling     // 下一个兄弟标签元素
        previousElementSibling  // 上一个兄弟标签元素
        
2、操作标签       
    a. 文件内容操作
        - innerText    # 仅文本

            标签.innerText            # 获取标签中的文本内容(过滤标签)
            标签.innerText = ""        # 对标签内部文本进行重新赋值
    
        - innerHTML                    # 获取标签中全内容
        
        - value        
            input标签        # 获取当前值
            select标签        # 获取选中的值 selectedIndex
            textarea标签    # 获取当前标签中的值
            
        - 搜索框示例

            
    b.  样式操作
        className
        tag.className                     直接整体做操作class
        tag.classList                    class列表
        tag.classList.add('样式名')     添加指定样式
        tag.classList.remove('样式名')  删除指定样式
        
        对某一个样式操作:    
            <style>
                .c1{
                    font-size:16px;
                    color:red
                }
            </style>
            <div class='c1 c2'></div>
            
        # obj.style.fontSize='16px';
        # obj.style.backgroundColor='red';
        # .style.color = 'red';
            
    c. 属性操作
        obj = document.getElementById('i1')
        
        obj.attributes         #获取所有属性
        obj.getAttibute
        obj.setAttribute('属性名','属性')
        obj.removeArrribute('属性名')
        
    d. 创建标签,并添加到HTML中:
        - 字符串方式
        - 对象方式
            document.createElement('input')
        - 创建、添加标签示例
        
    e. 提交表单
        任何标签通过DOM都可以提交表单
        <body>
            <form  id='f1' action="">
                <input type="text">
                <input type="submit" value="提交">
                <a onclick="submitFrom(); " href="">提交吧</a>
            </form>
            <script>
                function submitForm(){
                   document.getElementById('f1').submit();
                }
            </script>
        </body>

    f. 其他:
        console.log()
        alert()
        var v = confirm()    # 确认框,返回值true/false
        
        checkbox  
            对象.checked    # 获取值
            对象.checked = true    # 设置值
            
        location
            location.href                    # 获取当前网址
            location.href = ''                # 重定向,跳转
            location.reload()                # 页面刷新
            location.href=location.href <==>location.reload()
        
        setInterval
            # 定时器一直执行
            # var o1 =  setInterval(function(){},5000)
            # clearInterval(o1)
        
            var obj = setInterval(function(){
                console.log(1);
                clearInterval(obj);    # 清楚定时器
            },5000)
        
        setTimeout
            # 定时器只执行一次
            # var o2 = setTimeout(function(){},5000)
            # cleatTimeout(o2)
        
            setTimeout(function(){
                console.log('time')
            },5000)
        
3、事件
    - 定义:
        <div onclick='函数(123)'></div>
        <script> ... </script>
    - 常用:
        onclick
        onblur
        onfocus
        onmouseover
        onmouseout
    - 绑定事件两种方式:
        - 直接标签绑定 onclick ='func();'
        - 先获取DOM对象,然后进行绑定
            document.getElementsById('xx').onclick
    
    - this当前触发事件的标签
        a. 第一种绑定方式
            <input type='button' onclick='clickon(this)'>
            
            function clickon(ths){
                //ths当前点击标签
            }
        b.第二种绑定方式
            <input id = 'i1' type='button'>
            ocument.getElementsById('i1').onclick= function(){
                //this 代指当前点击标签
            }
        c. 第三种绑定方式    
            示例:
            <style>
                #main{
                    background-color: red;width:400px;height: 300px;
                }
                #content{
                    background-color: cadetblue;width:200px;height: 150px;
                }
            </style>
            <body>
                <div id="main">
                    <div id="content"></div>
                </div>
                <script>
                    var mymain = document.getElementById('main');
                    var mycontent = document.getElementById('content');
                    mymain.addEventListener('click',function(){console.log('main')},false);
                    mycontent.addEventListener('click',function(){console.log('content')},false);
                    //事件的捕捉与冒泡  true:捕捉  false: 冒泡
                </script>
            </body>

            
            
- 搜索框示例:
    <body>
        <input id="i1" onfocus="Focus();"  onblur="Blur();" type="text" value="请输入关键字">
        <input type="text"placeholder="请输入关键字">    <!--新浏览器支持-->
        <script>
            function Focus(){
                var tag=document.getElementById('i1');
                var val =tag.value;
                if (val == "请输入关键字"){
                    tag.value="";
                }
            }
            function Blur(){
                var tag=document.getElementById('i1');
                var val =tag.value;
                if (val.length == 0){
                    tag.value='请输入关键字';
                }
            }
        </script>
    </body>                
            
- 创建、添加标签示例:
    <body>
        <input type="button" onclick="AddEle1();"value="+">
        <input type="button" onclick="AddEle2();"value="+">
        <div id="i1">
            <p><input type="text"></p>
        </div>
        <script>
            function AddEle1(){
                //创建一个标签
                //将标签添加到i1 里面
                var tag = "<p><input type='text'></p>";
                document.getElementById('i1').insertAdjacentHTML('beforeEnd',tag)
                //beforeBegin,afterBegin,beforeEnd,afterEnd 四个参数
            }
            function AddEle2(){
                //创建一个标签
                //将标签添加到i1 里面
                var tag = document.createElement('input');
                tag.setAttribute('type','text');
                tag.style.fontSize='16px';
                tag.style.color='red';

                var p=document.createElement('p');
                p.appendChild(tag);
                document.getElementById('i1').appendChild(p)
            }
        </script>
    </body>            
            
            
- 模态对话框 + 全选反选取消 示例:
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .hide{
                display: none;
            }
            .c1{
                position: fixed;
                left: 0;top:0;right: 0;bottom:0;
                background-color: black;opacity: 0.6;z-index: 9;
            }
            .c2{
                width:500px;height: 400px;background-color: white;position: fixed;
                left:50%;top:50%;margin-left:-250px;margin-top:-200px;
                z-index: 10;;
            }
        </style>
    </head>
    <body style="margin:0;">
        <div>
            <input type="button" value="添加" onclick="ShowModel();">
            <input type="button" value="全选" onclick="ChoseAll();">
            <input type="button" value="取消" onclick="CancleAll();">
            <input type="button" value="反选" onclick="ReverseAll();">
        </div>
        <table>
            <thead>
                <tr>
                    <th>选择</th>
                    <th>主机名</th>
                    <th>端口</th>
                </tr>
            </thead>
            <tbody id="tb">
                <tr>
                    <td><input type="checkbox"></td>
                    <td>1.1.1.1</td>
                    <td>190</td>
                </tr>
                <tr>
                    <td><input type="checkbox"></td>
                    <td>1.1.1.2</td>
                    <td>192</td>
                </tr>
                <tr>
                    <td><input type="checkbox"></td>
                    <td>1.1.1.3</td>
                    <td>193</td>
                </tr>
            </tbody>
        </table>
        <!--遮罩层开始-->
        <div id="i1" class="c1 hide"></div>
        <!--遮罩层结束-->
        <!--弹出框开始-->
        <div id="i2" class="c2 hide">
            <p><input type="text"></p>
            <p><input type="text"></p>
            <p><input type="button" value="取消"onclick="HideModel();">
               <input type="button" value="确定" ></p>
        </div>
        <!--弹出框结束-->

        <script>
            function ShowModel(){
                document.getElementById('i1').classList.remove('hide');
                document.getElementById('i2').classList.remove('hide');
            }
            function HideModel(){
                document.getElementById('i1').classList.add('hide');
                document.getElementById('i2').classList.add('hide');
            }
            function ChoseAll(){
                var tbody = document.getElementById('tb');
                //获取所有tr
                var tr_list = tbody.children;
                for (var i=0;i<tr_list.length;i++){
                    //循环所有tr,current_tr
                    var current_tr = tr_list[i];
                    var checkbox = current_tr.children[0].children[0];
                    checkbox.checked=true;
                }
            }
            function CancleAll(){
                var tbody = document.getElementById('tb');
                //获取所有tr
                var tr_list = tbody.children;
                for (var i=0;i<tr_list.length;i++){
                    //循环所有tr,current_tr
                    var current_tr = tr_list[i];
                    var checkbox = current_tr.children[0].children[0];
                    checkbox.checked=false;
                }
            }
            function ReverseAll(){
                var tbody = document.getElementById('tb');
                //获取所有tr
                var tr_list = tbody.children;
                for (var i=0;i<tr_list.length;i++){
                    //循环所有tr,current_tr
                    var current_tr = tr_list[i];
                    var checkbox = current_tr.children[0].children[0];
                    if(checkbox.checked){
                        checkbox.checked=false;
                    }else{
                        checkbox.checked=true;
                    }
                }
            }
        </script>
    </body>

    
- 左侧菜单示例:
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .hide{
                display: none;
            }
            .item .header{
                height: 35px;color:white;line-height: 35px;;
            }
        </style>
    </head>
    <body>
        <div style="height: 48px;"></div>
        <div style="width:300px;">
            <div class="item">
                <div id="i1" class="header" onclick="ChangeMenu('i1');">菜单一</div>
                <div class="content">
                    <div>内容1</div>
                    <div>内容2</div>
                    <div>内容3</div>
                </div>
            </div>
            <div class="item">
                <div id="i2" class="header" onclick="ChangeMenu('i2');">菜单二</div>
                <div class="content hide">
                    <div>内容1</div>
                    <div>内容2</div>
                    <div>内容3</div>
                </div>
            </div>
            <div class="item">
                <div id="i3" class="header" onclick="ChangeMenu('i3');">菜单三</div>
                <div class="content hide">
                    <div>内容1</div>
                    <div>内容2</div>
                    <div>内容3</div>
                </div>
            </div>
        </div>
        <script>
            function ChangeMenu(nid){
                var current_header = document.getElementById(nid);
                var item_list =current_header.parentElement.parentElement.children;
                for(var i=0;i<item_list.length;i++){
                    var current_item = item_list[i];
                    current_item.children[1].classList.add('hide');
                }
                current_header.nextElementSibling.classList.remove('hide');
            }
        </script>   

posted @ 2019-12-23 21:57  badweather  阅读(124)  评论(0编辑  收藏  举报