zoukankan      html  css  js  c++  java
  • Javascript进阶篇——(DOM—认识DOM、ByName、ByTagName)—笔记整理

    认识DOM
    文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。DOM 将HTML文档呈现为带有元素、属性和文本的树结构(节点树)。


    将HTML代码分解为DOM节点层次图:


    HTML文档可以说由节点构成的集合,DOM节点有:
      1. 元素节点:上图中<html>、<body>、<p>等都是元素节点,即标签。
      2. 文本节点:向用户展示的内容,如<li>...</li>中的JavaScript、DOM、CSS等文本。
      3. 属性节点:元素属性,如<a>标签的链接属性href="http://www.imooc.com"。

    节点属性:


    遍历节点树:

    以上图ul为例,它的父级节点body,它的子节点3个li,它的兄弟结点h2、P。

    DOM操作:


    前两个是document方法。

    例:通过getElementById获取id为con的h2标签。修改h2标签的样式,将颜色设为红色。修改h2标签的样式,将背景颜色设为灰色(#CCC)。通过style.display实现隐藏。

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>style样式</title>
     6 </head>
     7 <body>
     8     <h2 id="con">I love JavaScript</H2>
     9     <p> JavaScript使网页显示动态效果并实现与用户交互功能。</p>
    10     <script type="text/javascript">
    11         var tite = document.getElementById("con");
    12         tite.style.color = "red";
    13         tite.style.backgroundColor = "#ccc";
    14         tite.style.display = "none";
    15     </script>
    16 </body>
    17 </html>

    getElementsByName()方法
    返回带有指定名称的节点对象的集合

    语法:

    document.getElementsByName(name)

    与getElementById() 方法不同的是,通过元素的 name 属性查询元素而不是通过 id 属性
    注意:
      1. 因为文档中的 name 属性可能不唯一,所有 getElementsByName() 方法返回的是元素的数组,而不是一个元素。
      2. 和数组类似也有length属性,可以和访问数组一样的方法来访问,从0开始。

    例:

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <script type="text/javascript">
     5     function getnum(){
     6         var mynode = document.getElementsByName("myt");  
     7         alert(mynode.length);
     8     }
     9 </script>
    10 </head>
    11 <body>
    12     <input name="myt" type="text" value="1">
    13     <input name="myt" type="text" value="2">
    14     <input name="myt" type="text" value="3">
    15     <input name="myt" type="text" value="4">
    16     <input name="myt" type="text" value="5">
    17     <input name="myt" type="text" value="6">
    18     <br />
    19     <input type="button" onclick="getnum()" value="看看有几项?" />
    20 </body>
    21 </html>

    运行结果:

    getElementsByTagName()方法
    返回带有指定标签名的节点对象的集合。返回元素的顺序是它们在文档中的顺序。

    语法:

    getElementsByTagName(Tagname)

    1. Tagname是标签的名称,如p、a、img等标签名。
    2. 和数组类似也有length属性,可以和访问数组一样的方法来访问,所以从0开始。

    通过getElementsByTagName()获取节点:

    使用三种获取节点的方法:

     1 <!DOCTYPE HTML>
     2 <html>  
     3 <head>  
     4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
     5 <title>JavaScript</title>  
     6 </head>  
     7 <body>  
     8     <form name="Input">
     9         <table align="center" width="500px" height="50%" border="1">
    10             <tr>
    11                 <td align="center" width="100px">
    12                     学号:
    13                 </td>
    14                 <td align="center" width="300px">
    15                     <input type="text" id=userid name="user" onblur="validate();">
    16                     <div id=usermsg></div>
    17                 </td>
    18             </tr>
    19             <tr>
    20                 <td align="center" width="100px">
    21                     姓名:
    22                 </td>
    23                 <td align="center">
    24                     <input type="text" name="name">
    25                 </td>
    26             </tr>
    27             <tr>
    28                 <td align="center" width="%45">
    29                     性别:
    30                 </td>
    31                 <td align="center">
    32                     <input type="radio" name="sex" value="男">
    33 34                     <input type="radio" name="sex" value="女">
    35 36                 </td>
    37             </tr>
    38             <tr>
    39                 <td align="center" width="30%">
    40                     年龄:
    41                 </td>
    42                 <td align="center" width="300px">
    43                     <input type="text" name="age">
    44                 </td>
    45             </tr>
    46             <tr>
    47                 <td align="center" width="100px">
    48                     地址:
    49                 </td>
    50                 <td align="center" width="300px">
    51                     <input type="text" name="addr">
    52                 </td>
    53             </tr>
    54         </table>
    55     </form>
    56     <h1 id="myHead" onclick="getValue()">
    57         看看三种获取节点的方法?
    58     </h1>
    59     <p>
    60         点击标题弹出它的值。
    61     </p>
    62     <input type="button" onclick="getElements()"value="看看name为sex的节点有几个?" />
    63     <br/>
    64     <input type="button" onclick="getTagElements()"value="看看标签名为input的节点有几个?" />
    65     <script type="text/javascript">
    66         function getValue(){
    67             var myH = document.getElementById("myHead");
    68             alert(myH.innerHTML)
    69         }
    70 
    71         function getElements(){
    72             var myS = document.getElementsByName("sex");
    73             alert(myS.length);
    74         }
    75 
    76         function getTagElements(){
    77             var myI = document.getElementsByTagName("input")
    78             alert(myI.length);
    79         }
    80     </script>
    81 </body>
    82 </html>

    区别getElementByID,getElementsByName,getElementsByTagName
    以人来举例说明,人有能标识身份的身份证,有姓名,有类别(大人、小孩、老人)等。
      1. ID 是一个人的身份证号码,是唯一的。所以通过getElementById获取的是指定的一个人。
      2. Name 是他的名字,可以重复。所以通过getElementsByName获取名字相同的人集合。
      3. TagName可看似某类,getElementsByTagName获取相同类的人集合。如获取小孩这类人,getElementsByTagName("小孩")。

    把上面的例子转换到HTML中如下:

    <input type="checkbox" name="hobby" id="hobby1"> 音乐

    input标签就像人的类别。
    name属性就像人的姓名。
    id属性就像人的身份证。

    方法总结如下:(方法区分大小写)



    通过下面的例子(6个name="hobby"的复选项,两个按钮)来区分三种方法的不同:

    1 <input type="checkbox" name="hobby" id="hobby1">  音乐
    2 <input type="checkbox" name="hobby" id="hobby2">  登山
    3 <input type="checkbox" name="hobby" id="hobby3">  游泳
    4 <input type="checkbox" name="hobby" id="hobby4">  阅读
    5 <input type="checkbox" name="hobby" id="hobby5">  打球
    6 <input type="checkbox" name="hobby" id="hobby6">  跑步 
    7 <input type="button" value = "全选" id="button1">
    8 <input type="button" value = "全不选" id="button1">
    1 document.getElementsByTagName("input"); //结果为获取所有标签为input的元素,共8个。
    2 
    3 document.getElementsByName("hobby"); //结果为获取属性name="hobby"的元素,共6个。
    4 
    5 document.getElementById("hobby6"); //结果为获取属性id="hobby6"的元素,只有一个,"跑步"这个复选项。

    实现当点击"全选"按钮时,将选中所有的复选项。实现当点击"全不选"按钮时,将取消所有选中的复选项。在文本框中输入输入1-6数值,当点击"确定"按钮时,根据输入的数值,通过id选中相应的复选项:

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5     <title>无标题文档</title>
     6 </head>
     7 <body>
     8     <form>
     9       请选择你爱好:<br>
    10       <input type="checkbox" name="hobby" id="hobby1">  音乐
    11       <input type="checkbox" name="hobby" id="hobby2">  登山
    12       <input type="checkbox" name="hobby" id="hobby3">  游泳
    13       <input type="checkbox" name="hobby" id="hobby4">  阅读
    14       <input type="checkbox" name="hobby" id="hobby5">  打球
    15       <input type="checkbox" name="hobby" id="hobby6">  跑步 <br>
    16       <input type="button" value = "全选" onclick = "checkall();">
    17       <input type="button" value = "全不选" onclick = "clearall();">
    18       <p>请输入您要选择爱好的序号,序号为1-6:</p>
    19       <input id="wb" name="wb" type="text" >
    20       <input name="ok" type="button" value="确定" onclick = "checkone();">
    21     </form>
    22 
    23     <script type="text/javascript">
    24         function checkall(){
    25             var hobby = document.getElementsByTagName("input");
    26 
    27             for(i = 0; i < hobby.length; i++){
    28                 if(hobby[i].type == "checkbox"){
    29                     hobby[i].checked = true;
    30                 }
    31             } 
    32         }
    33         function clearall(){
    34           var hobby = document.getElementsByName("hobby");
    35 
    36           for(i = 0; i < hobby.length; i++){
    37               if(hobby[i].type == "checkbox"){
    38                   hobby[i].checked = false;
    39               }
    40           }
    41         }
    42 
    43         function checkone(){
    44             var j=document.getElementById("wb").value;
    45 
    46             var hobby = document.getElementById("hobby" + j);
    47             
    48             hobby.checked = true;
    49         }
    50     </script>
    51 </body>
    52 </html>
  • 相关阅读:
    附件下载遇到 ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION 错误
    Javascript模块编程&jQuery插件开发学习笔记
    网站推荐
    分布式服务下Quartz任务变为EREOR分析及解决
    Quartz任务监听器
    定时任务框架Quartz基本使用
    2020年CKA考试分享
    vue-element-loading 动态插件
    pycharm之常用插件
    PHP开源项目之YOURLS
  • 原文地址:https://www.cnblogs.com/alice-shan/p/5265465.html
Copyright © 2011-2022 走看看