zoukankan      html  css  js  c++  java
  • JavaScripts学习日记——DOM

    DOM Document Object Model 文档对象模型  整合js和html css.控制html文档行为.
    DOM就是把页面当中所有内容全部封装成对象.
    HTML文档中万物皆对象.

    1.对象的分类
        Document ***
        Element  ***
        Attribute
        Text
        Common
    以上5类对象 具有一些共同特征 抽象出了一个父类
        Node
            自身属性
                nodeName
                nodeValue
                nodeType   Document ==> 9   Element ==> 1
            导航属性
                parentNode
    2.页面中获得Element对象的方式
        Document
            getElementById();
            getELementsByTagName();
            getElementsByClassName();
            getElementsByName();
        Element(局部中获得Element的方式)
            getELementsByTagName();
            getElementsByClassName();
    3.事件
        给Element对象附加一些事件属性.属性的类型是Function类型.这些Function属性在什么时候被运行呢?
    只看属性的名称.
    属性名称:
        onclick ==> 单击时触发
        ondblclick ==> 双击时触发
        onblur ==>  失去焦点时触发
        onfocus ==> 得到焦点时触发
        onchange ==> 用于表单元素, 当元素被修改时触发
        onkeydown ==> 当键盘按键被按下时
        onmousemove ==> 当鼠标移动时触发
        onmousedown ==> 当鼠标按键按下时触发
        onmouseover ==> 当鼠标指向时触发
        onmouseout ==> 当鼠标移出时触发
        onsubmit ==> 当表单提交时触发
        onload  ==>  只给body标签使用.当页面加载完成后 执行.

    两种添加事件的方式:

    <body>
        <input type="button" value="点我" onclick="alert('aaa');" id="abc" />
    <script type="text/javascript">
    //第一种为元素附加事件属性的方式
    //就是在标签上写上属性名称和 对应执行的代码 例如: onclick="alert('aaa');"
    //如上代码就是在为input对象附加 一个onclick的Function属性.
    //alert('aaa'); 就是 Function的方法体.
    //证明如下
    var input = document.getElementById("abc");
                alert(input.onclick);
    </script>
    </body>
    <body>
        <input type="button" value="点我" id="abc" />
    <script type="text/javascript">
    //第二种为元素附加事件属性的方式
    var input = document.getElementById("abc");
    input.onclick = function(){
        alert('bbb');
    }
    
    </script>
    </body>

    3.事件详情的获得:
            我们获得事件详情要找到侦探来知道(事件Event);
            如何来获得Event对象呢?
            Event对象是在事件发生时被创建, 并传递给我们的事件Function中.所以我们直接使用即可.

    使用示例:

    <body>
        <input type="text" id="abc"  />
        
    <script type="text/javascript">
    //onkeydown 当键盘某个键按下时触发  应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
    //问题1? 如何获得用户按下的是哪个键呢? 找侦探问.
    //问题2? 如何获得侦探? 侦探在事件发生时系统已经创建好了,并且会在事件函数被调用时传给事件函数.我们获得仅仅需要接收一下即可.
            
    var input = document.getElementById("abc");
    input.onkeydown = function (event,abc){
        //拿到侦探之后 如何获得 事件详情(哪个键被按下呢)
        //alert(event.keyCode);
        //经过观察 回车按键对应的 keyCode是 13
        if(event.keyCode == 13){ 
            alert("表单提交啦!");
        }
    }
    </script>
    </body>

    4.Event对象
            属性:
                keyCode
                button
                clientX(了解) 返回当事件被触发时,鼠标指针的水平坐标。
                clientY(了解) 返回当事件被触发时,鼠标指针的垂直坐标。
            方法:
                preventDefault() ==> 阻止默认关联事件的发生.  
                stopPropergation ==> 组织事件的向下传播.
    关于页面对象的增删该查
        相关方法:
            Document
                creatElement
            Element
                方法
                appendChild
                removeChild
                replaceChild
                cloneNode
                setAttribute(key,value)
                属性
                innerHTML 修改标签体.(支持直接书写html代码)
    DHTML的概念 Dynamic HTML 动态网页技术
        就是整合4门技术 ==>  DOM HTML CSS JavaScript
        用通俗的话说: DHTML就是 将我们的之前学的DOM对象进行增强.
        什么是增强?  对对象来讲,增强无非就是 增加新的属性获得方法.
    5.增删改查

    <script type="text/javascript">
    //在第一个div中动态增加一个a标签. 该a标签点击之后跳转到 传智首页.
        function addNode(){
            //1.获得 第一个div
            var div = document.getElementById("div_1");
            //2.创建a标签  createElement==>创建一个a标签   <a></a>
            var eleA =  document.createElement("a");
            //3.为a标签添加属性 <a href="http://www.itcast.cn"></a>
            eleA.setAttribute("href", "http://www.itcast.cn");
            //4.为a标签添加内容 <a href="http://www.itcast.cn">传智</a>
            eleA.innerHTML = "传智";    
            //5.将a标签添加到div中
            div.appendChild(eleA);
        }
        //点击后 删除div区域2
        function deleteNode(){
            //1 获得要删除的div区域
                var div = document.getElementById("div_2");
            //2.获得父亲
                var parent = div.parentNode;
            //3 由父亲操刀 
                parent.removeChild(div);
        }
        //点击后 替换div区域3 为一个美女
        function updateNode(){
            //1 获得要替换的div区域3
            var div = document.getElementById("div_3");
            //2创建img标签对象 <img />
            var img = document.createElement("img");
            //3添加属性 <img src="001.jpg" />
            img.setAttribute("src", "001.JPG");
            //4.获得父节点
            var parent = div.parentNode;
            //5.替换
            parent.replaceChild(img, div);
        }
        //点击后 将div区域4 克隆一份 添加到页面底部
        
        function copyNode(){
            //1.获取要克隆的div
            var div = document.getElementById("div_4");
            //2.克隆 参数为true 那么克隆时克隆所有子元素. false 只克隆自己
            var div_copy = div.cloneNode(true);
            //3.获得父亲
            var parent = div.parentNode;
            //4.添加
            parent.appendChild(div_copy);
        }
        
        
    </script>

    6.增加表格数据

    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
            <title>添加用户</title>
        </head>
        <body>
            <center>
                <br><br>
                添加用户:<br><br>
                姓名: <input type="text" name="name" id="name" />&nbsp;&nbsp;
                email: <input type="text" name="email" id="email" />&nbsp;&nbsp;
                电话: <input type="text" name="tel" id="tel" /><br><br>
                <button id="addUser">提交</button>
                <br><br>
                <hr>
                <br><br>
                <table id="usertable" border="1" cellpadding="5" cellspacing=0>
                    <tbody>
                        <tr>
                            <th>姓名</th>
                            <th>email</th>
                            <th>电话</th>
                            <th>&nbsp;</th>
                        </tr>
                        <tr>
                            <td>Tom</td>
                            <td>tom@tom.com</td>
                            <td>5000</td>
                            <td><a href="javascript:void(0)" onclick="del(this)" >Delete</a></td>
                        </tr>
                        <tr>
                            <td>Jerry</td>
                            <td>jerry@sohu.com</td>
                            <td>8000</td>
                            <td><a href="javascript:void(0)" onclick="del(this)" >Delete</a></td>
                        </tr>
                    </tbody>
                </table>
            </center>
            
        </body>
        <script language="JavaScript">
        /**
        <a href="javascript:void(fun1())" >haha</a>
            function fun1(){
                alert('haha');
                return "haha";
            }
        */
            /* document.getElementById("addUser").onclick=function(){
                // value属性属于 DHTML的范畴. Dynamic HTML ==> 动态网页  ==> DOM JS CSS HTML ==> DHTML实际上就是对DOM对象的增强.
                // DHTML为我们的DOM对象 附加了很多 便利 属性和方法.能简化我们的开发工作.
                
                    //1.获得表单中 名字 邮箱 电话信息  
                    var name = document.getElementById("name").value;
                    var email = document.getElementById("email").value;
                    var tel = document.getElementById("tel").value;
                    //2.组装tr
                    var tr = document.createElement("tr");
                    //3.组装td
                    var nameTd = document.createElement("td");
                    nameTd.innerHTML = name;
                    var emailTd = document.createElement("td");
                    emailTd.innerHTML = email;
                    var telTd = document.createElement("td");
                    telTd.innerHTML = tel;
                    //4.将td添加到tr中
                    tr.appendChild(nameTd);
                    tr.appendChild(emailTd);
                    tr.appendChild(telTd);
                    //5.将tr添加到table中
                    document.getElementById("usertable").appendChild(tr);
            } */
            document.getElementById("addUser").onclick=function(){
                // value属性属于 DHTML的范畴. Dynamic HTML ==> 动态网页  ==> DOM JS CSS HTML ==> DHTML实际上就是对DOM对象的增强.
                // DHTML为我们的DOM对象 附加了很多 便利 属性和方法.能简化我们的开发工作.
                
                    //1.获得表单中 名字 邮箱 电话信息  
                    var name = document.getElementById("name").value;
                    var email = document.getElementById("email").value;
                    var tel = document.getElementById("tel").value;
                    //2组装tr
                    var tr = document.createElement("tr");
                    tr.innerHTML="<td>"+name+"</td><td>"+email+"</td><td>"+tel+"</td><td><a href='javascript:void(0)' onclick='del(this)' >Delete</a></td>";
                    //3将tr添加到table中
                    document.getElementById("usertable").appendChild(tr);
            }
            //小知识点: 协议名:协议内容 
                // 将a标签自身功能阉割.
                //    <a href="javascript:void(0)" onclick="del(this)" >Delete</a>
            //小知识点: this 指向 方法的调用者,在当前例子中.this指向了a标签
                    function del(obj){    
                    obj.parentNode.parentNode.parentNode.removeChild(a.parentNode.parentNode);
                    
            }
            
        </script>
    </html>
  • 相关阅读:
    WPF添加ResourceDictionary后【The Property "Resource" can only be set once】问题
    WPF中获取匿名(Anonymous)对象的键值方法(例如DataGrid绑定List<无名元素>时)
    安装Win10到移动硬盘的利器:WTGA
    xcodebuild 能在模拟器上运行测试啦
    Jenkins Mac slave 遇到 git: 'credential-osxkeychain' is not a git command. 错误
    远程调试UWP遇到新错误Could not generate the root folder for app package ......
    开始学习python
    文件打包
    统计 某个目录下 所有的文件的行数
    根据进程名称获取进程id
  • 原文地址:https://www.cnblogs.com/insistence/p/5950477.html
Copyright © 2011-2022 走看看