zoukankan      html  css  js  c++  java
  • bom and dom

    bom:Broswer Object Model: 浏览器对象模型
    - navigator: 获取客户机的信息(浏览器的信息)
    document.write(navigator.appName);
    - screen:获取屏幕的信息
    document.write(screen.width + "<br />");
    document.write(screen.height);
    - location:请求url地址 - href属性
    //获取当前到请求的url地址
    document.write(location.href);
    //设置URL地址
    function href(){
      location.href = "http://www.baidu.com";
    }
    - history:请求的url的历史记录

    window:窗口对象,顶层对象(所用的bom对象都是在window里面操作的)
    相关方法:
    - window.alert():警告框,显示内容。简写alert()
    - confirm():确认框
    - var flag = window.confirm("显示的内容");

    1 //confirm():确认框
    2 var flag = window.confirm("是否删除");
    3 if(flag==true){
    4     alert("删除成功")
    5 }else{
    6     alert("删除失败");
    7 }

    - prompt():输入的对话框
    - window.prompt("在显示的内容","输入框里面的默认值");
    - window.prompt("please input : ","0");
    - open():打开一个新的窗口
      open("打开的新窗口的地址url","","窗口特征,比如窗口宽度和高度");

    1 function open1(){
    2     window.open("http://jd.com","","width=300,height=200");
    3 }

    - close():关闭窗口(浏览器兼容性比较差)
    - window.close();

    - 定时器
    setInterval("js代码",毫秒数) 1秒=1000毫秒
    clearInterval(): 清除setInterval设置的定时器

    setTimeout("js代码",毫秒数)
    clearTimeout() : 清除setTimeout设置的定时器

    dom:Document Object Model:文档对象模型
    - 文档:超文本文档(超文本标记文档) html 、xml
    - 对象:提供了属性和方法
    - 模型:使用属性和方法操作超文本标记型文档
    --可以使用js里面的dom里面提供的对象,使用这些对象的属性和方法,对标记型文档进行操作
    如何使用dom解析html?

    DOM模型有三种:
    DOM level 1:将html文档封装成对象。
    DOM level 2:在level 1的基础上添加新的功能,例如:对于事件和css样式的支持。
    DOM level 3:支持xml 1.0的一些新特性。
    DHTML:动态HTML,不是一门语言。是很多技术的简称。包括
    html: 封装数据
    css:使用属性和属性值设置样式
    dom:操作html文档(标记型文档)
    javascript:专门指的是js的语法语句(ECMAScript)
    document对象:表示整个文档
    常用方法:write()方法
    (1)向页面输出变量(值)
    (2)向页面输出html代码
    - var str = "abc";
    document.write(str);
    document.write("<hr/>");
    - getElementById(); 通过id得到元素(标签)

     1 <body>
     2     <input type="text" id="name" value="大兄逮"/><br />
     3 </body>
     4 <script type="text/javascript">
     5     // 使用getElementById得到input标签对象
     6     var input1 = document.getElementById("name");
     7     // 得到input标签具体某元素的值
     8     document.write(input1.value);
     9     // 向input里设置一个值value
    10     input1.value = "卖挂";
    11 </script>
    View Code

    - getElementsByName();- 通过标签的name的属性值得到标签
    - 返回的是一个集合(数组)

     1 <body>
     2     <input type="text" name="name1" value="text_1"/><br />
     3     <input type="text" name="name1" value="text_2"/><br />
     4     <input type="text" name="name1" value="text_3"/><br />
     5     <input type="text" name="name1" value="text_4"/><br />
     6 </body>
     7 <script type="text/javascript">
     8     // getElementsByName获取input标签
     9     var inputs = document.getElementsByName("name1");// 传参数是标签name里面的值
    10     //alert(intputs.length);
    11     // 遍历数组
    12     for(var i=0;i<inputs.length;i++){
    13         var input1 = inputs[i]; // 每次循环得到input对象,赋值到input1
    14         alert(input1.value); // 得到每个input标签里的value
    15     }
    16 </script>
    View Code

    - getElementsByTagName("标签名称");- 通过标签名称得到元素

     1 <body>
     2     <input type="text" value="text_1"/><br />
     3     <input type="text" value="text_2"/><br />
     4     <input type="text" value="text_3"/><br />
     5 </body>
     6 <script type="text/javascript">
     7     // 通过getElementsByTagName得到标签名
     8     var inputs = document.getElementsByTagName("input");
     9     //alert(inputs.length)
    10     for(var i = 0;i<inputs.length;i++){
    11         var input1 = inputs[i];
    12         alert(input1.value);
    13     }
    14 </script>
    View Code

    注:只有一个标签,这个标签只能使用name获取到,这个使用,使用getElementsByName返回的是一个数组,但是现在只有一个元素,这个时候不需要遍历,而是可以直接通过数组的下标获取到值。

    1 //通过name得到input标签
    2 var inputs = document.getElementsByName("name_1")[0];
    3 alert(inputs.value);
    4 //通过标签获得元素
    5 var inputs = document.getElementsByTagName("input")[0];
    6 alert(inputs.value);

    案例:在末尾添加节点
    第一步:获取到ul标签:getElementById
    第二步:创建li标签:document.createElement("标签名称")方法
    第三步:创建文本:document.createTextNode("文本内容");
    第四步:把文本添加到li下面:使用 appendChild方法
    第五步:把里添加到ul末尾:使用 appendChild方法

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>案例 在末尾添加标签</title>
     6     </head>
     7     <body>
     8         <ul id="ulid">
     9             <li>1111</li>
    10             <li>2222</li>
    11             <li>3333</li>
    12             <li>4444</li>
    13         </ul>
    14         <br />
    15         <input type="button" value="add" onclick="add()"/>
    16     </body>
    17     <script type="text/javascript">
    18         // 在末尾添加节点
    19         function add(){
    20             // 获取到ul标签
    21             var ul1 = document.getElementById("ulid");
    22             // 创建标签
    23             var li1 = document.createElement("li");
    24             // 创建文本
    25             var text1 = document.createTextNode("newNode");
    26             
    27             // 文本添加到li下面
    28             li1.appendChild(text1);
    29             // li加入到ul下面
    30             ul1.appendChild(li1);
    31         }
    32     </script>
    33 </html>
    View Code

    元素对象(element对象)
    要操作element对象,首先必须要获取到element,使用document里面相应的方法获取。
    getAttribute("属性名称"):获取属性里面的值

    1 // 获取input标签
    2 var input1 = document.getElementById("inputId");
    3 //alert(input1.value);
    4 alert(input1.getAttribute("value"));

    setAttribute("name","value"):设置属性的值

    1 var input1 = document.getElementById("inputId");
    2 input1.setAttribute("value","2222");
    3 alert(input1.getAttribute("value"));

    removeAttribute("name"):删除属性【不能删除value】

    1 var input1 = document.getElementById("inputId");
    2 alert(input1.getAttribute("value"));//默认值:aaa
    3 input1.removeAttribute("value");
    4 alert(input1.getAttribute("value"));// null

    想要获取标签下面的子标签,使用属性 childNodes,但是这个属性兼容性很差。唯一有效办法,使用getElementsByTagName方法。

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>Element对象</title>
     6     </head>
     7     <body>
     8         <ul id="ulid">
     9             <li>aaaaaa</li>
    10             <li>bbbbbb</li>
    11             <li>cccccc</li>
    12         </ul>
    13         <br />
    14     </body>
    15     <script type="text/javascript">
    16         // 获取ul下面的所有子标签(子元素)
    17         // 获取ul标签
    18         var ul = document.getElementById("ulid");
    19         // 获取ul下面的子标签
    20 //        var lis = ul.childNodes;
    21 //        alert(lis.length);//7
    22         var lis = ul.getElementsByTagName("li");
    23         alert(lis.length)
    24     </script>
    25 </html>
    View Code

    Node对象属性一:nodeName、nodeType、nodeValue

    标签(元素)节点对应的值
    - nodeType:返回值1
    - nodeName:返回标签元素的名称,大写标签名称 比如SPAN
    - nodeValue:返回值null

    属性节点对应的值
    - nodeType:返回值2
    - nodeName:返回这个属性名称
    - nodeValue:返回这个属性的值

    文本节点对应的值
    - nodeType:返回值3
    - nodeName:返回一个内容为#text的字符串
    - nodeValue:文本内容

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>Node对象属性</title>
     6     </head>
     7     <body>
     8         <span id="spanid">啊哈哈</span>
     9     </body>
    10     <script type="text/javascript">
    11         // 获取span标签对象
    12         var span1 = document.getElementById("spanid");
    13         /*
    14         alert(span1.nodeType); // 1
    15         alert(span1.nodeName); // SPAN
    16         alert(span1.nodeValue); //null
    17         */
    18         
    19         // 获取属性节点
    20         var id1 = span1.getAttributeNode("id");
    21         /*
    22         alert(id1.nodeType); // 2
    23         alert(id1.nodeName); // id 属性名称
    24         alert(id1.nodeValue); // spandid 属性值
    25         */
    26         
    27         // 获取文本
    28         var text1 = span1.firstChild;
    29         alert(text1.nodeType); // 3
    30         alert(text1.nodeName); // #text
    31         alert(text1.nodeValue); // 文本内容
    32         
    33     </script>
    34 </html>
    View Code

    Node对象的属性二:父节点、子节点、同辈节点

    1 <ul id="ulid">
    2     <li id="li1">aaaaaa</li>
    3     <li id="li2">bbbbbb</li>
    4 </ul>

    父节点:parentNode
    - ul是li的父节点

    子节点
    - li是ul的子节点
    - childNodes:得到所有子节点,但是兼容性很差
    - firstChild:获取第一个子节点
    - lastChild:获取最后一个子节点

    同辈节点
    - li直接关系是同辈节点
    - previousSibling:返回一个给定节点的上一个兄弟节点。
    - nextSibling: 返回一个给定节点的下一个兄弟节点。

    详情代码:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <ul id="ulid"><li id="li1">aaaaaa</li><li id="li2">bbbbbb</li><li id="li3">cccccc</li><li id="li4">dddddd</li></ul>
     9     </body>
    10     <script type="text/javascript">
    11         /*
    12         // 获取父节点
    13         // 得到li1
    14         var li1 = document.getElementById("li1");
    15         // 得到ul
    16         var ul1 = li1.parentNode;
    17         alert(ul1.id);//ulid
    18         */
    19         
    20         
    21         // 获取ul的第一个子节点 id=li1
    22         // 得到ul
    23         var ul1 = document.getElementById("ulid");
    24         // 第一个子节点
    25         var li1 = ul1.firstChild;
    26         alert(li1.id);//li1
    27         
    28         // 得到最后一个子节点
    29         var li4 = ul1.lastChild;
    30         alert(li4.id);//li4
    31         
    32         
    33         /*
    34         // 获取li的id是li3的上一个和下一个兄弟节点
    35         var li3 = document.getElementById("li3");
    36         alert(li3.previousSibling.id);//li2
    37         alert(li3.nextSibling.id);//li4
    38         */
    39     </script>
    40 </html>
    View Code

    注:不同浏览器存在的不同的解析方式,可能因为空格的原因而导致获取不到对应的节点,这时候可以把列表标签的空格去掉即可。
    操作dom树
    appendChild方法:- 添加子节点到末尾
    - 特点:类似于剪切黏贴的效果

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         <style type="text/css">
     7             #div1{
     8                 width: 200px;
     9                 height: 150px;
    10                 border: 2px solid red;
    11             }
    12             #div2{
    13                 width: 250px;
    14                 height: 150px;
    15                 border: 5px dashed gray;
    16             }
    17         </style>
    18     </head>
    19     <body>
    20         <div id="div1">
    21             <ul id="ulid1">
    22                 <li>tom</li>
    23                 <li>mary</li>
    24                 <li>jack</li>
    25             </ul>
    26         </div>
    27         <div id="div2">
    28             
    29         </div>
    30         <input type="button" value="add" onclick="add()" />
    31     </body>
    32     <script type="text/javascript">
    33         function add(){
    34             // 得到div2
    35             var div2 = document.getElementById("div2");
    36             // 获取ul
    37             var ul1 = document.getElementById("ulid1");
    38             // 把ul添加到div2里面
    39             div2.appendChild(ul1);
    40         }
    41     </script>
    42 </html>
    View Code

    insertBefore(newNode,oldNode)方法:- 在某个节点之前插入一个新的节点
    注:不存在 没有insertAfter()方法
    - 插入一个节点,节点不存在,创建
    1、创建标签
    2、创建文本
    3、把文本添加到标签下面

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <ul id="ulid">
     9             <li id="li1">西施</li>
    10             <li id="li2">王昭君</li>
    11             <li id="li3">貂蝉</li>
    12             <li id="li4">杨玉环</li>
    13         </ul>
    14          <input type="button" value="insert" onclick="insert()" />
    15     </body>
    16     <script type="text/javascript">
    17         // 在貂蝉之前添加 <li>董小宛</li>
    18         function insert(){
    19             /*
    20              * 1.获取到li3标签
    21              * 2.创建li
    22              * 3.创建文本
    23              * 4.把文本添加到li下面
    24              * 5.获取到ul
    25              * 6.把li添加到ul下面(在貂蝉之前添加 <li>董小宛</li>)
    26              */
    27             // 获取li3标签
    28             var li3 = document.getElementById("li3");
    29             // 创建li
    30             var li5 = document.createElement("li");
    31             //创建文本
    32             var text1 = document.createTextNode("董小宛");
    33             // 把文本添加到li下面
    34             li5.appendChild(text1);
    35             // 获取ul
    36             var ul2 = document.getElementById("ulid");
    37             // insertBefore(newNode,oldNode);
    38             ul2.insertBefore(li5,li3);
    39         }
    40     </script>
    41 </html>
    View Code

    removeChild方法:删除节点 -通过父节点删除,不能自己删除自己

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <ul id="ulid">
     9             <li id="li1">西施</li>
    10             <li id="li2">王昭君</li>
    11             <li id="li3">貂蝉</li>
    12             <li id="li4">杨玉环</li>
    13         </ul>
    14         <input type="button"  value="remove" onclick="remove()"/>
    15     </body>
    16     <script type="text/javascript">
    17         // 删除末尾节点
    18         function remove(){
    19             /**
    20              * 1.获取li4标签
    21              * 2.获取父节点ul标签
    22              * 3.执行删除(通过父节点删除)
    23              */
    24             // 获取li标签
    25             var templi = document.getElementById("li4");
    26             // 获取父节点 (id方式  parentNode两种方式获取)
    27             var tempul = document.getElementById("ulid");
    28             // 删除(通过父节点)
    29             tempul.removeChild(li4); // 只能删一次
    30         }
    31     </script>
    32 </html>
    View Code

    replaceChild(newNode,oldNode)方法: 替换节点
    - 不能自己替换自己,通过父节点替换

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <ul id="ulid">
     9             <li id="li1">紫衫龙王</li>
    10             <li id="li2">白眉鹰王</li>
    11             <li id="li3">金毛狮王</li>
    12             <li id="li4">青翼蝠王</li>
    13         </ul>
    14         <input type="button"  value="replace" onclick="replace()"/>
    15     </body>
    16     <script type="text/javascript">
    17         // 删除末尾节点
    18         function replace(){
    19             // 替换最后一个为张无忌
    20             /**
    21              * 1. 获取li4
    22              * 2. 创建标签li
    23              * 3. 创建文本
    24              * 4. 把文本添加到li下面
    25              * 5. 获取ul标签
    26              * 6. 执行替换操作
    27              */
    28             // 获取li4标签
    29             var tempLi4 = document.getElementById("li4");
    30             // 创建li标签
    31             var tempLi5 = document.createElement("li");
    32             // 创建文本
    33             var tempText = document.createTextNode("张无忌");
    34             // 文本添加到li下面
    35             tempLi5.appendChild(tempText);
    36             // 获取ul标签
    37             var tempNode = document.getElementById("ulid");
    38             // 替换节点
    39             tempNode.replaceChild(tempLi5,tempLi4);
    40         }
    41     </script>
    42 </html>
    View Code

    cloneNode(boolean): 复制节点
    - //把ul列表复制到另外一个div里面

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <ul id="ulid">
     9             <li id="li1">紫衫龙王</li>
    10             <li id="li2">白眉鹰王</li>
    11             <li id="li3">金毛狮王</li>
    12             <li id="li4">青翼蝠王</li>
    13         </ul>
    14         <div id="divv">
    15             <!--被复制的内容放在这个div里-->
    16         </div>
    17         
    18         <input type="button" value="copy"  onclick="copy()"/>
    19     </body>
    20     <script type="text/javascript">
    21         function copy(){
    22             // 把ul列表复制到另一个div里面
    23             /*
    24              * 1、获取带ul
    25              * 2、执行复制方法cloneNode复制true
    26              * 3、把复制之后的内容放到div里面去
    27              *         获取到div
    28              *         appendChild
    29              */
    30             // 获取ul
    31             var ulid = document.getElementById("ulid");
    32             // 复制ul,放到类似剪切板里面
    33             var ulcopy = ulid.cloneNode(true)
    34             // 获取到div
    35             var divv = document.getElementById("divv");
    36             // 把副本放到divv里去
    37             divv.appendChild(ulcopy);
    38         }
    39     </script>
    40 </html>
    View Code

    操作dom总结
    获取节点使用方法
    - getElementById():通过节点的id属性,查找对应节点。
    - getElementsByName():通过节点的name属性,查找对应节点。
    - getElementsByTagName():通过节点名称,查找对应节点
    插入节点的方法
    - insertBefore方法:在某个节点之前插入
    - appendChild方法:在末尾添加,剪切黏贴
    删除节点方法
    - removeChild方法:通过父节点删除
    替换节点方法
    - replaceChild方法:通过父节点替换

  • 相关阅读:
    Intellij使用心得(四) -- 导入Eclipse的代码格式化文件
    idea安装插件plugin(主要针对网络连接不上的情况)
    IDEA破解方法以及快捷键大全
    eclipse+maven搭建自己web系统的骨架,解决自带骨架加载无限慢的问题
    用Eclipse创建Maven多模块项目
    Maven实战--- dependencies与dependencyManagement的区别
    redis之有序集合类型(Zset)——排行榜的实现
    做一个完整的Java Web项目需要掌握的技能
    经典面试题:用户反映你开发的网站访问很慢可能会是什么原因
    linux 免密码 使用sudo 直接使用root权限执行命令
  • 原文地址:https://www.cnblogs.com/cao-yin/p/9828353.html
Copyright © 2011-2022 走看看