【DOM】获取元素的方式及增删改查

获取元素的方式

(1)系统提供的方法
旧方法:
id名获取: document.getElementById

    <div id="box"></div>
    <script>
        document.getElementById("box");//这中查找方式是最快的一种方式
    </script>

class类名获取:getElementsByClassName

    <div class="box"></div>
    <script>
        document.getElementsByClassName("box");
    </script>
    

name属性获取:getElementsByName

    <input type="text" name="box">
    <script>
        document.getElementsByName("box");
    </script>

直接标签名获取:getElementsByTagName,当使用该标签为多个,要通过下标从0开始获取每一个

    <div class="box"></div>
    <div></div>
    <script>
        document.getElementsByTagName("div")[0];//第一个div
        document.getElementsByTagName("div")[1];//第二个div

H5出的新方法:非常好用,使用起来也很方便
querySelector:可以获取标签名但只能获取第一个,id名获取,class类名获取

    <div class="box"></div>
    <div id="doll"></div>
    <div></div>
    <script>
        document.querySelector(".box");
        document.querySelector("#doll");
       let a= document.querySelector("div")[2];
        console.log(a);//undefined

(2)系统提供的直接获取的方式

document.body  // body标签  比较常用
document.forms  // form表单们
document.anchors // 锚点 --- 废弃
document.images // 图片们
document.links // 超链接们
document.URL // 当前文档的网址
document.documentElement // 根节点

// 界面所有元素节点
document.all
document.getElementsByTagName("*");
document.querySelectorAll("*");
document.querySelector("*"); // ?

(3)通过关系获取
1、父子关系:
获取父元素:parentElement

    <div class="box">第一层
        <div id="doll">第二层id
            <div class="box3">第三层</div>
        </div>
        <div class="box2">第二层</div>
    </div>
    <script>
        let a = document.getElementById("doll").parentElement;
        let b = document.querySelector(".box3").parentElement;
        console.log(a);//第一层
        console.log(b);//第二层id
    </script>

获取父节点:parentNode
虽然看起parentElement和parentNode返回的值一样,但是有区别的,html是根元素,document是一种特殊的节点,当当前节点的父节点是document时,parentNode返回的是#document,而parentElement返回值为空,这就是他们两最大的区别。

        let  html = document.querySelector('html');			
			console.log(html.parentNode);//#document
			console.log(html.parentElement);//null

小补充:节点是由元素节点,属性节点,文本节点三部分组成

获取子级元素们:children,没有返回空数组

    <ul class="fu">
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <script>
        let ul=document.querySelector(".fu").children;
        console.log(ul);//HTMLCollection(3) [li, li, li]
        //当获取没有的子元素,结果为空数组
        let li=document.getElementsByTagName("li")[1].children;
        console.log(li);//HTMLCollection []

获取子级节点们:childNodes,

    <ul class="fu">
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <script>
        let ul=document.querySelector(".fu").childNodes;
        console.log(ul);//NodeList(7) [text, li, text, li, text, li, text]
        let li=document.getElementsByTagName("li")[1].childNodes;
        console.log(li);//NodeList [text]
    </script>

获取第一个子元素:firstElementChild

    <ul class="fu">
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <script>
        let ul=document.querySelector(".fu").firstElementChild;
        console.log(ul);//第一个li元素
    </script>

获取第一个子元素:firstChild

    <ul class="fu">你好
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <script>
        let ul=document.querySelector(".fu").firstChild;
        console.log(ul);//"你好"
    </script>

获取最后一个子元素:lastElementChild

    <ul class="fu">你好
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <script>
        let ul=document.querySelector(".fu").lastElementChild;
        console.log(ul);//第3个li
    </script>

获取最后一个子节点:lastChild

    <ul class="fu">你好
        <li>1</li>
        <li>2</li>
        <li>3</li>小明
    </ul>
    <script>
        let ul=document.querySelector(".fu").lastChild;
        console.log(ul);//"小明"
    </script>

2、兄弟关系
获取下一个兄弟元素:nextElementSibling

    <div class="box">第一层
        <div id="doll">第二层的id
            <div class="box3">第三层</div>
        </div>
        <div class="box2">第二层的class</div>
    </div>
    <script>
        let div=document.querySelector("#doll").nextElementSibling;
        console.log(div);//第二层的class
    </script>

获取下一个兄弟节点:nextSibling

    <div class="box">第一层
        <div id="doll">第二层的id
            <div class="box3">第三层</div>
        </div>空文本
        <div class="box2">第二层的class</div>
    </div>
    <script>
        let div=document.querySelector("#doll").nextSibling;
        console.log(div);//"空文本"
    </script>

获取上一个兄弟元素:previousElementSibling

    <div class="box">第一层
        <div id="doll">第二层的id
            <div class="box3">第三层</div>
        </div>空文本
        <div class="box2">第二层的class</div>
    </div>
    <script>
        let div=document.querySelector(".box2").previousElementSibling;
        console.log(div);//第二层的id
    </script>

获取上一个兄弟元素:previousSibling

    <div class="box">第一层
        <div id="doll">第二层的id
            <div class="box3">第三层</div>
        </div>空文本
        <div class="box2">第二层的class</div>
    </div>
    <script>
        let div=document.querySelector(".box2").previousSibling;
        console.log(div);//"空文本"
    </script>

注意:在获取兄弟关系的元素和节点中,如果没有则返回结果的是null

增删改查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值