成为前端牛马第十四天 —— DOM操作一

一. 获取元素

        常用方法为 querySelector 和 querySelectorAll ,括号内书写形式和css选择器一致,css怎么写里面就怎么写。

<body>
    <div id="box"></div>
    <ul class="list">
      <li class="items"></li>
      <li class="items"></li>
      <li class="items"></li>
      <li class="items"></li>
      <li class="items"></li>
    </ul>
    <input type="text" name="username" id="" />

    <script>
      /* 一. 获取非常规的元素 html head body */
      console.log(document.documentElement); //动态计算rem
      console.log(document.head);
      console.log(document.body);

      /* 二. 获取ID元素 */
      console.log(document.getElementById("box")); //直接就是标签
      //只会获取到单个DOM元素,id值具有唯一
      document.getElementById("box").innerHTML = " ";

      /* 三. 获取class类名 */
      console.log(document.getElementsByClassName("item"));

      /* 四. 获取带有name属性的标签 主要用于input表单 */
      console.log(document.getElementsByName("username"));

      /* 五. CSS方式获取元素 使用最多*/
      console.log(document.querySelector(".items"));
      console.log(document.querySelectorAll(".items"));

      /* 六. 标签名获取元素,返回值为伪数组 */
      console.log(document.getElementsByTagName("div"));
    </script>
  </body>

二. 操作元素

        获取到的标签为文档对象,可以使用.语法最标签属性直接操作。

        setAttribute主要设置自定义属性,当需要获取多个中的一个标签时,可以使用自定义属性设置标识,通过标识获取。

<body>
    <div id="box"></div>
    <input type="password" id="inp" />
    <button>eye</button>
    <div id="nmx">nmx</div>
    <script>
      /* 点语法操作属性 innerHTML操作标签结构和文本 value操作表单内容*/
      box.innerHTML = "123";
      //inp.value = "咸鱼茄子煲";

      /* 操作自定义属性一  setAttribute getAttribute removeAttribute*/
      nmx.setAttribute("nmx", "咸鱼茄子煲");
      /* 操作自定义属性二(H5) data-自定义属性名  .dataset */
      nmx.dataset.xiaoming = "茄子煲";
      delete nmx.dataset.xiaoming;
    </script>
  </body>

三. 操作元素样式

        通过 style 属性进行修改样式时,是给标签添加行内样式,主要在修改量不大时使用。

        className比较暴力美学,采用的是字符串拼接方式进行赋值,使用简单,效率高但没有去重等功能,多类名添加时还需注意空格问题。、

        classList主要是调用方法的方式,更加灵活,唯一缺点可能是删除类名只能一个一个删,不如className。

/* 方法一 style属性 */
      let box = document.querySelector(".box");
      console.log(box.style["background-color"]); //对象key值
      console.log(box.style.backgroundColor); //驼峰
      //只能访问行内样式

      /* 方法二 className 类似字符串拼接 */
      box.className = "box2"; //直接赋值
      box.className += " box3"; //添加类名,注意空格

      /* 方法三 classList  */
      box.classList.add("classList"); //带有去重效果
      box.classList.remove("classList"); //只能一个一个删除,不如className
      box.classList.toggle("classList");
      box.classList.contains("classList");//是否包含该类名
      /* 
        需要添加或者删除多个类名,className的暴力美学更香,classList有兼容性问题
      */

四. 获取节点

<body>
    <div class="box">
      <p>咸鱼茄子煲</p>
      <p>阿明</p>
    </div>
    <script>
      let box = document.querySelector(".box");

      /*一.  .children 获取子元素节点  .childrenNodes 获取所有的子元素节点,包含文本节点*/
      console.log(box.children); //拿到的是伪数组
      box.children[0].innerHTML = "明先生";

      /* firestChild firstElementChild */
      /* lastChild lastElementChild */

      /* previousSibling previousElementSibling 获取上个兄弟*/
      /* nextSibling nextElementSibling 获取下个兄弟*/
      box.lastElementChild.previousElementSibling.innerHTML = "咸鱼茄子煲";
      box.firstElementChild.nextElementSibling.innerHTML = "明先生";

      /* 二.  .parentNode 获取父节点 */
      /* 三.  .attributes 获取自定义属性节点 */
    </script>
  </body>

五. 操作节点

        append系列添加节点一般是添加到最后,要实现添加到最前面可以使用以下方法:

        父节点.insertBefore(要添加的子节点, 父节点.firstChild);

<body>
    <div id="box">
      <div id="child">公交车</div>
    </div>
    <script>
      let obj_div_1 = document.createElement("div");
      obj_div_1.innerHTML = "yellow";
      let obj_div_2 = document.createElement("div");
      obj_div_2.innerHTML = "pink";
      //插入子节点 appendChild() / append()
      box.appendChild(obj_div_1);
      /* 随意插入节点 (要插入节点,在谁之前插入)*/
      box.insertBefore(obj_div_2, child);

      //删除节点 removeChild(child) remove()//删自己

      //替换节点 replaceChild(新节点,旧节点)
    </script>
  </body>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值