js.DOM

DOM

1. 样式相关操作

1.1 ele.style.attr

  • 是一个可读可写的属性
  • 只能够取到行内样式
  • 使用js添加样式

1.2 当需要调整的样式比较多的时候,应当考虑操作类名

className 控制一个元素的所有类名 class的所有值

oDiv.className = "change";//将类名替换为change

classList 控制一个元素的单个类名 如果一个元素的class属性有其他的类名的话,其他类名不会受到影响

oDiv.classList.add("change");//给元素添加一个change类名
oDiv.classList.remove("change");//删除元素中一个change类名

1.3 style只能获取或者设置行内样式

如果要设置或获取其他样式(包括行内)设置的样式属性值,应当使用

getComputedStyle(  );//window方法,如果有单位的话,单位也会保留//只读
console.log(getComputedStyle(oDiv).width);
console.log(getComputedStyle(oDiv)["height"]);     
oDiv.style.width = parseInt(getComputedStyle(oDiv).width) + 200 + "px";//在原来宽度的基础上+200

2. 属性节点

 //先有元素
      let oDiv = document.getElementById("box");
      //1. ele.attr 只能操作默认属性 无法操作自定义属性
      console.log(oDiv.id);
      oDiv.id = "box1";
      //class 特殊
      console.log(oDiv.className);

      //以下针对的是默认和自定义的属性
      //了解的 attributes
      console.log(oDiv.attributes); //获取所有的属性
      //取某个属性的值
      console.log(oDiv.getAttribute("id"));

      //增加或者修改某个属性
      oDiv.setAttribute("index", 1); //自定义的
      console.log(oDiv.index); //undefined
      console.log(oDiv.getAttribute("index")); //1

      //删除某个属性
      oDiv.removeAttribute("index");

3. dataset

//自定义属性一般以data-开头,自定义属性一般用来保存一些js里能用到的数据
let oImg = document.querySelector("img");
console.log(oImg.dataset.id);//取到的是以data-为前缀的自定义属性值,前缀不要写

4. 元素节点内的内容及表单元素的值

<body>
    <input type="text" />
    <button>表单</button>
    <input type="button" value="按钮" />
    <div>
      <p>p1</p>
      <p>p2</p>
    </div>
    <span></span>
    <script>
      let children = document.body.children;
      console.log(children);

      //value 表单元素  除 button

      //children[0].value = "aaaa";
      //children[2].value = "world";

      //innerText 和 innerHTML  非表单元素 button

      //children[1].innerText = "hello";

      //children[3].innerText = "div";

      // children[3].innerHTML = "<h1>span</h1>"; //标签会解析
      // children[3].innerText = "<h1>span</h1>"; //原样显示

      console.log(children[3].innerHTML); //取到完整的内容,包括标签
      console.log(children[3].innerText); //只取文本
    </script>
  </body>

5. 获取一些尺寸和距离

let inner = document.querySelector(".inner");
//clientWidth clientHeight  取到的是width + padding
console.log(inner.clientWidth, inner.clientHeight); //120

//offsetWidth  offsetHeight 取到的是 width + padding + border
console.log(inner.offsetWidth, inner.offsetHeight); //140

//offsetLeft  offsetTop  取到当前元素距离有定位属性的父级的左边距和上边距
console.log(inner.offsetLeft, inner.offsetTop);

6. DOM元素节点的增删改

6.1 增

//新建一个p标签
let oP = document.creatElement("p");
//新增一个p标签
oDiv.appendChild(oP);//增加到元素内部的尾部
//创建文本节点
let oTxt = document.createTextNode("hello");
oP.appendChild(oTxt);

6.2 删

//删除节点
let oH1 = document.querySelector("h1");
oDiv.removeChild(oH1);
oH1.remove();

6.3 改

//替换节点
//用新创建的p节点替换h1
let oP = document.createElement("p");
let oH1 = document.querySelector("h1");
oDiv.replaceChild(oP, oH1); //用oP替换oH1 
//用已存在的节点替换另一个已存在的节点
let oH1 = document.querySelector("h1");
let oP = document.querySelector("p");
oDiv.replaceChild(oP, oH1); //挪位置 
//想保留 ,怎么办呢?  克隆一份
let oH1 = document.querySelector("h1");
let oP = document.querySelector("p");
let cloneP = oP.cloneNode(true); //布尔值 true 内容也克隆
oDiv.replaceChild(cloneP, oH1); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值