• DOM基础之获取元素


    1.获取元素
        获取元素就是获取元素节点,注意不是属性节点或文本节点,这跟CSS选择器相似,只不过选择器是CSS的操作方式,而JavaScript却有着属于自己的另一套方法。
        getElementById()
        getElementsByTagName()
        getElementsByClassName()
        querySelector()和querySelectorAll()
        getElementsByName()
        document.title 和document.body
        
       1.1对于getElementById()
               语法:document.getElementById("id名")
               分析:
               window.οnlοad=function()
               {
                        ....
                }
               这个是表示在整个页面加载完成后执行的代码块。我们都知道,浏览器是自上而下解析一个页面的。这个例子的JavaScript代码在HTML代码的上面,如果没有window.onload.浏览器解析到document.getElementById()就会报错,因为他不知道括号里的id参数的元素究竟是哪位兄弟。
               
     2.
     语法:getElementsByTagName("标签名")
     注意:其中的Elements是复数,因为该方法获取的是多个元素即集合。
     举例:

        
    ```
    <!!DOCTYPE >
    
    <html>
    
          <head>
    
                <title></title>
    
                <meta charset="utf-8" />
    
                <script>                
    
                            window.οnlοad=function()
    
                            {
    
                                  var oUi=document.getElementById("list");
    
                                  var oLi=oUi.getElementsByTagName("li");
    
                                  oLi[2].style.color="red";
    
                            }
    
                </script>
    
          </head>
    
          <body>
    
                <u1 id="list"></u>
    
                      <li>HTML</li>
    
                      <li>CSS</li>
    
                      <li>JavaScript</li>
    
                      <li>JQuery</li>
    
                      <li>Vue.js</li>
    
          </body>
    
    </html>
    
    
    ```

    运行结果
     
     分析:
            var oU1=document.getElementById("list");
            var oLi=oU1.getElemetsByTagName("li");
            在上面的代码中,首先使用getElementById()方法获取id为list的u1元素,然后用getElementsByTagName()方法获取u1元素下的所有li元素。若是用下面代码代替可以嘛
            var oLi=document.getElementsByTagName("li");
            事实上,这是不一样的。document.getElementsByTagName("li")获取的是"整个HTML页面"所有的li元素,而oU1.getElementsByTagName("li")获取的仅仅是”id为list的u1元素"下所有的li元素。
            其中getElementsByTagNam()方法获取的是一个类数组(伪数组)。类数组只能用到两点:1,length属性;2,下标形式   但是这里对于push()等方法是没办法在这里用的。
            举例

    ```
            <!!DOCTYPE >
    
    <html>
    
          <head>
    
                <title></title>
    
                <meta charset="utf-8" />
    
                <script>                
    
                            window.οnlοad=function()
    
                            {
    
                                  var arr=["HTML","CSS","JavaScript","Jquery","Vue.js"];
    
                                  var oU1=document.getElementById("list");
    
                                  var oLi=document.getElementsByTagName("li");
                                  for(var i=0;i<oLi.length;i++)
    
                                  {
    
                                        oLi[i].innerHTML=arr[i];
    
                                        oLi[i].style.color="red";
    
                                  }                       
    
                            }
    
                </script>
    
          </head>
    
          <body>
    
                <u1 id="list"></u>
    
                      <li></li>
    
                      <li></li>
    
                      <li></li>
    
                      <li></li>
    
                      <li></li>
    
          </body>
    
    </html>
    ```

    ```

    分析
        oLi表示获取类数组oLi的长度,有多少个元素,长度就是多少
        oLi[i].innerHTML=arr[i];表示设置li元素中的内容为对应下标的数组arr中的元素.innerHTML后面会学
        实例
        

    ```
    <!DOCTYPE >
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
          <head>
    
                <title></title>
    
                <meta charset="utf-8" />
    
                <script>
    
                      window.οnlοad=function()
    
                      {
    
                            document.body.innerHTML="<input type='button' 
    value='按钮' /><input type='button' value='按钮'/><input type='button' 
    value='按钮'/>"
    
                            var oBtn=document.getElementsByTagName("input");
    
                            
    
                            oBtn[0].οnclick=function()
    
                            {
    
                                  alert("表单元素共有:"+oBtn.length+"个");
    
                            };
    
                      }
    
                </script>
    
          </head>
    
          <body>
    
          </body>
    
    </html>
    
    
    ```
    

    分析:
            “document.body.innerHTML=......"表示动态为body元素添加DOM元素。”oBtn[0].οnclick=function(){......}"表示为第一个按钮添加点击事件。从这个例子可以看出,getElementsByTagName()方法可以操作动态创建的DOM元素。但是使用getElementById()就无法实现了,下面说说这两个方法的明显的区别
            1 getElenmentById()获取的是一个元素,而getElementsByTagName()获取的是多个元素(伪数组)
            2 getElementById()前面只可以接document,也就是document.getElementById();
            3 getElementById()不可以操作动态创建的DOM元素,而getElementsByTagName()可以操作动态创建的DOM元素。
            
       
     3.getElementsByClassName()
           在JavaScript中,如果想通过class来选中元素,我们可以使用getElementsByClassName()方法来实现。即通过类名获取元素。
           语法:
           document.getElementsByClassName("类名")
           说明:
                此方法获取的是一个类数组,和getElementsByTagName相似
                此方法不能操作动态DOM。
           举例:

    ```
    <!DOCTYPE >
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
          <head>
    
                <title></title>
    
                <meta charset="utf-8" />
    
                <script>
    
                      window.onload=function()
    
                      {
    
                            var 
    oLi=document.getElementsByClassName("select");
    
                            oLi[0].style.color="red";
    
                      }
    
                </script>
    
          </head>
    
          <body>
    
                <ul id="list">
    
                <li> HTML</li>
    
                <li>CSS</li>
    
                <li class="select">JavaScript</li>
    
                <li class="select">jQuery</li>
    
                <li class="select">Vue.js</li>      
    
                </ul>
    
          </body>
    
    </html>
    
    
    ```

     4  querySelector()和querySelectorAll()
      这两个方法使我们可以使用CSS选择器的语法来获取所需要的元素
      语法:
      document.querySelector("选择器");
      document.queruSelectorAll("选择器");
      querySelector()表示选取满足条件的第一个元素,querySelectorAll()表示选取满足条件的所有元素。
      对于id选择器来说,由于页面只有一个元素,最好使用getElementById(),而不是querySelector()或querySelectorAll().因为getElementById()方法效率更高。
      举例:

          
    ```
    <!DOCTYPE >
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
          <head>
    
                <title></title>
    
                <meta charset="utf-8" />
    
                <script>
    
                      window.οnlοad=function()
    
                      {
    
                            var oDiv=document.querySelectorAll(".test");
    
                            oDiv[1].style.color="red";
    
                      }
    
                </script>
    
          </head>
    
          <body>
    
                <div>绿叶学习网</div>
    
                <div class="test">绿叶学习网</div>
    
                <div class="test">绿叶学习网</div>
    
                <div>绿叶学习网</div>
    
                <div class="test">绿叶学习网</div>
    
          </body>
    
    </html>
    
    
    ```
      

     分析:
      document.querySelectorAll(".test")表示获取所有class为test的元素。也是一个类数组,所以要想精确的获得某一个元素,也需要使用数组下标的形式获取。
      
      #list li:nth-child(3)
      分析:表示选取id为list的元素下的第三个元素,“nth-child(n)"属于CSS3的选择器。事实上,也可以使用document.querySelectorAll("#list li:nth-child(3)")[0]来实现,两者效果一样,特别需要注意的是querySelectorAll()方法得到的是一个类数组,即使你获取的只有一个元素,也必须使用下标"[0]"才可以正确获取。
       
     5  getElementsByName()
     对于表单元素来说,他有一个普通元素没有的name属性。我们可以用getElenmentsByName()方法使用用name属性来获取表单元素。
        语法:
            document.getElementsByName("name名")
        说明:该方法获取的也是一个类数组,如果想要准确得到某一个元素,可以使用数组下标形式来获取。
        她只用于表单元素,一般只用于单选按钮和复选框。
        实例:
     

    ```
    <!DOCTYPE >
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
          <head>
    
                <title></title>
    
                <meta charset="utf-8" />
    
                <script>
    
                      window.οnlοad=function()
    
                      {
    
                            var oInput=document.getElementsByName("fruit");
    
                            for(var i=0;i<oInput.length;i++)
    
                            {
    
                                  oInput[2].checked=true;
    
                            }                 
    
                      }
    
                </script>
    
          </head>
    
          <body>
    
                你喜欢的水果:
    
                <label><input type="checkbox" name="fruit" value="苹果" />苹果</label>
    
                <label><input type="checkbox" name="fruit" value="香蕉" />香蕉</label>
    
                <label><input type="checkbox" name="fruit" value="西瓜" />西瓜</label>
    
    
    
          </body>
    
    </html>
    
    
    ```

    分析:
        oInput[i].checked=true;表示将类数组中的下标为i的checked属性设置为true,也就是这个按钮被选中
     
      
      6 document.title和document.body
        由于一个页面只有一个title元素和一个body元素,因此对于这两个元素的选取,JavaScript专门为我们提供了两个非常方便的方法:document.title和document.body
        

        
    ```
    <!DOCTYPE >
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
          <head>
    
                <title></title>
    
                <meta charset="utf-8" />
    
                <script>
    
                      window.οnlοad=function()
    
                      {
    
                            document.title="绿叶学习网";
    
                            document.body.innerHTML="<strong style='color: 
    red'>欢迎来到绿叶学习网</strong>"
    
                      }
    
                </script>
    
          </head>
    
          <body>
    
          </body>
    
    </html>
    
    
    ```
      
                
    
  • 相关阅读:
    【BZOJ1093】【ZJOI2007】最大半联通子图 [DP][Tarjan]
    【BZOJ1926】【SDOI2010】粟粟的书架 [主席树]
    【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]
    【BZOJ2815】【ZJOI2012】灾难 [LCA]
    【BZOJ3453】XLkxc [拉格朗日插值法]
    【BZOJ2850】巧克力王国 [KD-tree]
    《类和对象》
    @RequestMapping映射请求
    010-Python-socket编程
    SSH-Struts第二弹:一个Form提交两个Action
  • 原文地址:https://www.cnblogs.com/chmusk/p/12465876.html
Copyright © 2020-2023  润新知