首页 > 编程语言 >JavaScript的节点操作

JavaScript的节点操作

时间:2023-04-20 20:33:08浏览次数:28  
标签:node 返回 JavaScript parentNode var 操作 节点

目录

节点概述

一般来说,节点至少拥有nodeType,nodeName,nodeValue这三个基本属性

1.元素节点的nodeType为1

2.属性节点的nodeType为2

3.文本节点的nodeType为3(包括换行,文字,空格)

节点层级

1.父节点:node.parentNode

(1)parentNode属性可返回某节点的父节点,注意是最近的一个父节点

(2)如果指定的节点没有父节点则返回null

2.子节点:parentNode.childNodes(标准)

(1)parentNode.childNodes返回包含指定节点的子节点的集合,该集合为即时更新的集合

(2)注意:返回值里面包含了所有的子节点,包括元素节点,文本节点。如果只想要获得里面的元素节点,则需要专门处理

var ul=document.querySelector(‘ul’);

for(var i=0;i<ul.childNodes.length;i++){

   if(ul.childNodes[i].nodeType==1){

​     console.log(ul.childNodes[i];} }

(3)推荐使用:parentNode.children

(4)parentNode.firstElementChild:返回第一个子元素节点,找不到则返回null

(5)parentNode.lastElementChild:返回最后一个子元素节点,找不到则返回null(有兼容性问题)

(6)实际开发里的写法:parentNode.children[0] 第一个

parentNode.children[ol.children.length-1] 最后一个

3.兄弟节点:

(1)node.nextSibling:返回当前元素的下一个兄弟节点

(2)node.previousSibling:返回当前元素的上一个兄弟节点

(3)node.nextElementSibling:返回下一个兄弟元素节点

添删等节点操作

1.创建节点:document.createElement(‘tagName’)

2.添加节点:

(1)node.appendChild(child):将一个节点添加到指定父节点的子节点列表末尾,类似于css里面的after伪元素

(2)node.insertBefore(child,指定元素);

3.删除节点:node.removeChild(child):从DOM中删除一个节点,返回删除的节点

4.复制节点(克隆节点):node.cloneNode():返回调用该方法的节点的一个副本

(1)注:如果括号参数为空或者False,则为浅拷贝,即只克隆复制节点本身,不克隆里面的子节点

(2)如果括号参数为true,则为深拷贝,会复制节点本身以及里面所有的子节点

使用节点操作的示例

动态生成表格:

//HTML部分
<table cellspacing="0">
        <thead>
            <tr>
                <th>姓名</th>
                <th>科目</th>
                <th>成绩</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
        </tbody>
</table>
//CSS部分
<style>
        table{
            width: 800px;
            margin: 100px auto;
            border-collapse: collapse;
            text-align: center;
        }
        td,th{
            border: 1px solid #333;
        }
        thead tr{
            height: 40px;
            background-color: #ccc;
        }
</style>
//关键代码:JS部分
 <script>
        //1.先去准备好学生的数据
        var datas=[
            {
                name:'张三',
                subject:'JavaScript',
                score:100
            },{
                name:'李四',
                subject:'JavaScript',
                score:90
            },{
                name:'王五',
                subject:'JavaScript',
                score:80
            },{
                name:'李六',
                subject:'JavaScript',
                score:70
            }
        ];
        //2.往tbody里创建行,有几个人就创建几行(通过数组的长度)
        var tbody=document.querySelector('tbody');
        for(var i=0;i<datas.length;i++){        //外循环控制行tr
            //创建tr行
            var tr=document.createElement('tr');
            tbody.appendChild(tr);
            //行里面创建单元格td(单元格的数量取决于每个对象里面的属性个数)
            for(var k in datas[i]){             //内循环控制列td
                var td=document.createElement('td');
                //把对象里面的属性值datas[i][k]给td
                td.innerHTML=datas[i][k];
                tr.appendChild(td);
            }
            //3.创建有"删除"2个字的单元格
            var td=document.createElement('td');
            td.innerHTML='<a href="javascript:;">删除</a>';
            tr.appendChild(td);
        }
        //4.删除操作
        var as=document.querySelectorAll('a');
        for(var i=0;i<as.length;i++){
            as[i].onclick=function(){
                //点击a删除当前a所在的行(链接的爸爸的爸爸) node.removeChild(child)
                tbody.removeChild(this.parentNode.parentNode);
            }
        }
</script>

标签:node,返回,JavaScript,parentNode,var,操作,节点
From: https://www.cnblogs.com/breakkk1013/p/17338229.html

相关文章

  • Mysql添加用户和设置权限的操作方法
    Mysql添加用户和设置权限的操作方法 更新时间:2022年07月28日09:42:08 作者:怪 咖@  https://www.jb51.net/article/257120.htm这篇文章主要介绍了Mysql添加用户和设置权限的操作方法,主要包括管理用户,权限控制的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具......
  • linux设备树-设备树常用OF操作函数
    ----------------------------------------------------------------------------------------------------------------------------内核版本:linux5.2.8根文件系统:busybox1.25.0u-boot:2016.05-------------------------------------------------------------------------------......
  • xv6操作系统启动过程
    当按下系统电源按键后,做一些硬件层面的配置和初始化:上电复位:在开机时,计算机进行硬件复位,确保寄存器和其他硬件组件处于初始状态。检查和测试硬件:计算机进行一系列硬件检查和自检操作,以确保硬件组件功能正常。这可能包括内存检测、CPU测试等。初始化硬件组件:初始化和配置计算......
  • Linux设备节点创建方式的演变历史
    引子  遵从"Everythingisafile"的思想,在Linux下想要操作设备的话,是需要通过一类叫做设备节点(devicenode)的特殊文件。设备节点通常位于/dev这个目录下,但是位于其它目录也是可以的。只要翻开一本介绍Linux驱动的书,或者在网上搜索相关的文章,很大概率上会教你在写好驱动代码后......
  • CF 580C- Kefa and Park, 1500 / 树的遍历 / 根节点到叶节点的路径上某性质的点不能
    CF580C-KefaandPark这个1500的题这么水?这还不如1200、1300的思维题我开始没考虑周全,这题给出的连边没有讲都是从父节点连向子节点,所有要建双边。#include<iostream>#include<cstring>usingnamespacestd;constintN=1e5+10,M=N*2;typedeflonglon......
  • oracle去掉回车换行空格操作
    评:去除换行updatezhzl_addresstsett.add_administration_num=replace(t.add_administration_num,chr(10),'');去掉回车updatezhzl_addresstsett.add_administration_num=replace(t.add_administration_num,chr(13),'');去掉空格updatezhzl_addre......
  • Python操作Neo4j数据库使用案例
    Python操作Neo4j数据库使用案例一、数据结构二、上传数据三、清空数据库项目数据和代码  Neo4j是一个世界领先的开源的基于图的数据库。其语言操作简单直观,本文假设你已经安装好Neo4j数据库,并对知识图谱有一定的了解。Neo4j数据库的查询语言为CQL,其代表Cypher查询语言。像Orac......
  • 数据中心厂商超云加入龙蜥社区,多款服务器完成与龙蜥操作系统适配
    近日,长城超云(北京)科技有限公司(以下简称“超云”)签署了CLA(ContributorLicenseAgreement,贡献者许可协议),正式加入龙蜥社区(OpenAnolis)。超云是由CEC中国电子、云基地产业基金联合注资成立的国家高新技术企业,其专注于云基础架构、云系统、云服务三大产业布局,现已形成了覆盖X86服......
  • git 基本操作
    gitconfig配置全局配置name和邮箱gitconfig--globaluser.name"xxx"gitconfig--globaluser.email"xxx"初始化一个项目1、初始化本地项目gitinit2、基于远程分支克隆gitclone远程仓库地址暂存区操作添加到暂存区gitaddfile...gitadd.暂存所有......
  • day 07 7.1 前端基础之JavaScript基础【一】
    前端基础之JavaScript基础【一】【1】、JavaScript的历史1992年底,美国国家超级电脑应用中心(NCSA)开始开发一个独立的浏览器,叫做Mosaic。这是人类历史上第一个浏览器,从此网页可以在图形界面的窗口浏览。但是该浏览器还没有面向大众的普通用户。1994年10月,NCSA的一个主要......