DOM操作

作者: 阿鲁提尔 | 来源:发表于2017-08-24 23:37 被阅读0次

    1: dom对象的innerText和innerHTML有什么区别?

    innerHTML支持HTML;innertext只支持纯文本。
    写:

      div1.innerHTML='<i>hello world</i>'   //输出 hello world(斜体)
    
      div1.innerText='<i>hello world</i>'   //输出<i>hello world</i>
    

    读:

      <div>
          <p>
              123
              <span>456</span>
         </p>
     </div>
     var ct = document.getElementsByTagName('div')
    
     console.log(ct.innerHTML) 
     //<p>123<span>456</span></p>
    

    innerHTML 会输出HTML标签

     console.log(ct.innerText)   
     //123456  
    

    innerText 会忽略HTML标签

    2: elem.children和elem.childNodes的区别?

    • elem.children返回元素中的元素子节点,是HTMLCollection的实例;
    • elem.childNodes返回元素中的所有子节点(包括空白文本节点),childNodes中保存着一个NodeList类数组对象(有length属性但并不是Array的实例),可通过方括号语法来访问NodeList的值。

    大多数情况下使用children属性,在元素只包含元素子节点时,这两个属性的值相同。

    <body>    
        <h1>Hello</h1>
        <p>abcabc</p>
    </body
    

    3:查询元素有几种常见的方法?ES5的元素选择方法是什么?

    getElementById() //(查符合的ID)

    返回匹配指定id属性的元素节点。

      var elem = document.getElementById('id名字')
    

    getElementsByClassName() //(查所有符合的class)

    返回一个类似数组的对象(HTMLCollection类型的对象),包括了所有class名字符合条件的元素(搜索范围包括本身),元素的变化实时反映在返回结果中。

      var elements = document.getElementsByClassName(names)
    

    注:names参数可以是多个空格分隔的class名字,返回同时具有这些节点的元素

      document.getElementsByClassName('warp text')
    

    getElementsByTagName() //(查所有符合的标签)

    返回所有指定标签的元素(包括本身),返回值是一个HTMLCollection对象,搜索结果是一个动态集合,任何元素的变化都会实时反映在返回的集合中。

      var paras = document.getElementsByTagName("p")
      // 返回当前文档的所有p元素节点
    

    如果参数是大写,会将参数转为小写后,再进行搜索。

    getElementsByName() //(查找拥有name属性的元素)

    getElementsByName方法用于选择拥有name属性的HTML元素,比如form、img、frame、embed和object,返回一个NodeList格式的对象,不会实时反映元素的变化。

      // 假定有一个表单是
      <form name="x"></form>
      var forms = document.getElementsByName("x");
      forms[0].tagName // "FORM"
    

    注意,在IE浏览器使用这个方法,会将没有name属性、但有同名id属性的元素也返回,所以name和id属性最好设为不一样的值。

    ES5的元素

    querySelector() //(查找第一个符合要求的元素)

    querySelector方法返回匹配指定的CSS选择器的元素节点。如果有多个节点满足匹配条件,则返回第一个匹配的节点。如果没有发现匹配的节点,则返回null。

      var el1 = document.querySelector(".myclass");
      var el2 = document.querySelector('#myParent > [ng-click]');
    

    querySelector方法无法选中CSS伪元素。

    querySelectorAll() //(查找所有符合要求的元素)

    querySelectorAll方法返回匹配指定的CSS选择器的所有节点,返回的是NodeList类型的对象。NodeList对象不是动态集合,所以元素节点的变化无法实时反映在返回结果中。

    elementList = document.querySelectorAll(selectors);
    

    querySelectorAll方法的参数,可以是逗号分隔的多个CSS选择器,返回所有匹配其中一个选择器的元素。

    var matches = document.querySelectorAll("div.note, div.alert");
    

    4:如何创建一个元素?如何给元素设置属性?如何删除属性

      <div id="ct">
        <p>hello world</p>
      </div>
      <script>
        var ct = document.getElementById("ct");
        // 获取div
        var newLine = document.createElement("a");
        // 获取a
        newLine.setAttribute("href", "http://www.baidu.com")
        // 给a设置元素属性
        ct.appendChild(newLine);
        // 在div里面添加a元素
        newLine.removeAttribute("href");
        // 删除a的href元素属性
      </script>
    

    5:如何给页面元素添加子元素?如何删除页面元素下的子元素?

      <div id="ct">
        <p>hello</p>
      </div>
      <script>
        var ct = document.getElementById("ct");
        // 获取div
        var paras = document.createElement("span");
        paras.innerText = "world";
        ct.appendChild(paras);
        // 在div里添加span,并添加内容"world"
        var el1 = document.querySelector("p")
        ct.removeChild(el1);
        //删除p标签 
      </script>
    

    6: element.classList有哪些方法?如何判断一个元素的 class 列表中是包含某个 class?如何添加一个class?如何删除一个class?

    element.classList所有方法介绍如下:

    • add : 为DOM对象加class。
    • remove :从DOM对象删class 。
    • contains :检测DOM对象是否已经应用了某class。
    • toggle :若DOM对象已经应用了某class则删除,若未应用则添加。
    • item :获取指定下表的class名字。

    判断、添加和删除class:

    <!DOCTYPE html>
    <head></head>
    <body>
        <h1 class="title">hello world</h1>
        <script>
          var title = document.querySelector('.title');
          title.classList.contains('title');
          //判断一个元素的 class 列表中是否包含title
          title.classList.add('heading');
          // 添加一个class
          title.classList.remove('heading');
          //删除该class
        </script>
    </body>
    

    7: 如何选中如下代码所有的li元素? 如何选中btn元素?

    <!DOCTYPE html>
    <head></head>
    <body>
      <div class="mod-tabs">
         <ul>
             <li>list1</li>
             <li>list2</li>
             <li>list3</li>
         </ul>
         <button class="btn">点我</button>
      </div>
      <script>
        var AllLi1 = document.getElementsByTagName('li')
        var AllLi2 = document.querySelectorAll('.mod-tabs ul>li')
        var button1 = document.getElementsByClassName('btn')
        var button2 = document.querySelectorAll('.mod-tabs .btn')
        console.log(AllLi1)
        console.log(AllLi2)
        console.log(button1)
        console.log(button2)
      </script>
    </body>
    

    相关文章

      网友评论

        本文标题:DOM操作

        本文链接:https://www.haomeiwen.com/subject/xrmldxtx.html