let button = document . querySelector ( 'button' ); // 先获取button 目标元素 console . dir (button); console . dir (button. parentNode ); // 获取到父元素 div标签 // 修改一下父元素的背景颜色 button. parentNode . style . backgroundColor = 'red' ; //button.parentNode.style.display = 'none'; </ script > </ body >

子节点查找

childNodes

获得所有子节点.包括文本节点(空格,换行),注释节点等

children(重点)!!!

仅获得所有元素节点,返回一个伪数组,没有元素返回空数组

父元素.children
 <style>
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        background-color: aqua;
        padding: 20px;
        height: 30px;
        background-color: yellow;
    </style>
  </head>
      <li>a1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
      <li>b1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
    <script>
        //点击ul自己的li消失
      let uls = document.querySelectorAll('ul');
      for (let index = 0; index < uls.length; index++) {
        uls[index].addEventListener('click', function () {
          for (let j = 0; j < this.children.length; j++) {
            this.children[j].style.display="none";
    </script>
  </body>

兄弟节点查找

1下一个兄弟节点

nextElementSibling属性

2上一个兄弟节点

previousElementSibling属性

<li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <script> 1 获取所有的li标签 数组 2 遍历 绑定点击事件 3 事件触发了 this.next this.previou 获取到对应的元素 设置他们的样式 // 1 获取所有的li标签 数组 let lis = document.querySelectorAll('li'); // 2 遍历 绑定点击事件 for (let index = 0; index < lis.length; index++) { // 3 事件触发了 lis[index].addEventListener('click', function () { // 上一个兄弟 设置 蓝色 this.previousElementSibling.style.backgroundColor = 'blue'; // 下一个兄弟 设置 绿色 this.nextElementSibling.style.backgroundColor = 'green'; </script> </body>

创造出一个新的网页元素,再添加到网页内,一般先创建节点,然后插入节点

创建节点的方法

document.creatElement('标签名')

想要在界面看到,还得插入到某个父元素中

1插入到父元素的最后一个子元素

父元素.appendChild(要插入的元素)

2插入到父元素中的某个子元素的前面

父元素.insertBefore(要插入的元素,在哪个元素前面)
      <li>1</li>
      <li>2</li>
    <script>
      // 1 创建一个 li标签 节点
      let li = document.createElement('li');
      li.innerText="这个是新创建的li标签";
      li.style.backgroundColor="green";
      // 2 把li标签插入到 ul标签中
      let ul = document.querySelector('ul');
      ul.appendChild(li); // 把li标签插入到ul中 父元素的底部 插入子元素
    </script>
  </body>
      <button>123</button>
    </div>
    <p></p>
    <script>
      let button = document.querySelector('button');
      let p = document.querySelector('p');
      // p.insertBefore(button,null);// 没有想好 把 button插入到p标签的哪个子元素上面,传递一个null 
      // p.insertBefore(指定p标签的子元素)
    </script>
  </body>

特殊情况下,我们新增节点,按如下操作:复制一个原有的节点,把复制的节点放入到指定的元素内部

cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值

若为true,则代表克隆时会包含后代节点一起克隆---深拷贝

若为false,则代表克隆时不包含后代节点--浅拷贝(默认为flase)

元素.cloneNode(布尔值)
 <style>
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      .box {
        width: 100px;
        height: 100px;
        background-color: aqua;
        border: 1px solid #000;
    </style>
  </head>
    <div class="box">
      <button>点击</button>
    </div>
    <script>
      // 1 来克隆这个节点 box
      let box = document.querySelector('.box');
      // 2 开始克隆
      // let newBox = box.cloneNode(); // 浅克隆 不会把 div的后代节点一起克隆 
      let newBox = box.cloneNode(true); // true 深克隆 会把 div的后代节点一起克隆 
      // 3 插入到body标签中
      document.body.appendChild(newBox);
    </script>
  </body>

若一个节点在页面中已不需要时,可以删除它

在js原生DOM操作中,要删除元素必须通过父元素删除

父元素.removeChild(要删除的元素)

注意:如不存在父子关系则删除不成功

删除节点和隐藏节点()有区别:隐藏节点还是存在的,但删除,则是从html'中删除节点

<button>删除ul中某一个li标签</button> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <script> let button = document.querySelector('button'); let ul = document.querySelector('ul'); // 要删除的子元素 let li = document.querySelector('li:nth-child(1)'); // 1 button.addEventListener('click', function () { // 删除指定的元素 ul.removeChild(li); // 删除自己 ul.remove(); </script> </body>

补充判断真伪数组

<div></div> <div></div> <script> // 真正的数组 简单的判断 有一个方法 filter let arr=[]; // 通过 document.querySelectorAll 获取的数组 就是伪数组 可以使用for循环 但是有很多的真正的数组方法 伪数组用不了的!! console.log(arr.filter); let divs=document.querySelectorAll("div"); console.log(divs.filter); </script> </body>
<script>
      // // 1 实例化一个 时间对象 new
       let date = new Date();
       console.log(date.getFullYear()); // 2 输出当下是什么年份
       console.log(date.getMonth()); // 3 输出月份 0-12 都会自己 加一
       console.log(date.getDate()); // 4 几号
       console.log(date.getDay()); // 5 输出星期几 星期一 是 1 星期二  星期六 6 星期天 0
       console.log(date.getHours()); // 6 小时
       console.log(date.getMinutes());// 7 分钟
       console.log(date.getSeconds());// 8 秒
     </script>
    <h1></h1>
<script>
// 小小练习
      // 在定时器内输出他们
      // 输出  年月日 时分秒
      let h1 = document.querySelector('h1');
       setInterval(function () {
         let nowDate = new Date();
         console.log(1);
         let fullyear = nowDate.getFullYear();
         let month = nowDate.getMonth();
         let date = nowDate.getDate();
         let hours = nowDate.getHours();
         let minutes = nowDate.getMinutes();
         let seconds = nowDate.getSeconds();
         h1.innerText = `${fullyear}-${month}-${date} ${hours}:${minutes}:${seconds}`;
       }, 1000);
      </script>
<script>
// 三种方式 获取时间戳
       let date=new Date();
       console.log(date.getTime()); // 方式一
       console.log(+(new Date()) ); // 方式二 只要日期对象 可以使用 + 将整个对象 转成 时间戳
       console.log(Date.now()); // 方式三
      // 来快速生成一个不会重复的数字  * 随机数 
    </script>
复制代码
分类:
前端
标签: