【JavaScript】DOM查询(子节点、父节点、兄弟节点)源码详解

简介: 【JavaScript】DOM查询(子节点、父节点、兄弟节点)源码详解

获取元素节点的子节点


  • 通过具体的元素节点调用


  1. getElementsByTagName()方法


返回当前节点的指定标签名的后代节点


document.getElementById('bt4').onclick = function(){
    //获取id为shouyou的元素节点
    var shouyou = document.getElementById('shouyou');
    //获取手游名
    var games = shouyou.getElementsByTagName('li');
    for(var i=0;i<games.length;i++){
        alert(games[i].innerHTML)
    }
}


  1. childNodes属性


表示当前节点的所有子节点,包括空白文本。


document.getElementById('bt5').onclick = function(){
    //获取id为shouyou的元素节点
     var shouyou = document.getElementById('shouyou');
     //获取子节点,包括文本
     var childnodes = shouyou.childNodes;
     for(var i = 0; i<childnodes.length; i++){
         alert(childnodes[i].innerHTML)
     }
 }


  1. children属性


表示当前节点的所有子元素,不包括空白文本。


document.getElementById('bt6').onclick = function(){
  //获取id为shouyou的元素节点
  var shouyou = document.getElementById('shouyou');
    //获取所有子元素
  var childNodes2 = shouyou.children;
  for(var y = 0 ; y <childNodes2.length ; y++){
      alert(childNodes2[y].innerHTML);
  }
}


  1. firstChild属性


表示当前节点的第一个子节点,包含空白文本。


document.getElementById('bt7').onclick = function(){
    //获取class为d1的元素节点
    var d2 = document.getElementsByClassName('d1')[0];
    //获取div下的第一个子节点
    var first_child = d2.firstChild;
    alert(first_child.innerHTML);
}


  1. lastChild属性


表示当前节点的最后一个子节点


document.getElementById('bt8').onclick = function(){
    //获取class为d1的元素节点
    var d2 = document.getElementsByClassName('d1')[0];
    var last_child = d2.lastChild;
    alert(last_child.value);
}


实现效果如下,源码放在文末。


实现效果:



获取父节点和兄弟节点


  • 通过具体的节点调用


  1. parentNode属性


表示当前节点的父节点


document.getElementById('bt9').onclick = function(){
    //获取id为li2的元素节点
    var li = document.getElementById('li2');
    //获取当前元素的父节点
    var parent = li.parentNode;
    alert(parent.innerText);
}


  1. previousSibling属性


表示当前节点的前一个兄弟节点,包括文本空白。


使用 previousElementSibling属性(IE8及以下浏览器不支持)


表示当前节点的前一个兄弟节点,但不包括文本空白


document.getElementById('bt10').onclick = function(){
    //获取id为li2的元素节点
    var li = document.getElementById('li2');
    // var pre = li.previousSibling;
    // alert(pre);
    var pre1 = li.previousElementSibling;
    alert(pre1.innerHTML);
}


  1. nextSibling属性


表示当前节点的后一个兄弟节点,包括文本空白。


使用 previousElementSibling属性(IE8及以下浏览器不支持)


表示当前节点的前一个兄弟节点,但不包括文本空白


document.getElementById('bt11').onclick = function(){
    //获取id为li2的元素节点
    var li = document.getElementById('li2');
    // var next = li.nextSibling;
    // alert(next.innerHTML);
    var next1 = li.nextElementSibling;
    alert(next1.innerHTML);
}


实现效果:



扩展:获取和修改input文本标签中的值


获取value值:


document.getElementById('bt12').onclick = function(){
    //获取input标签
    var print = document.getElementById('print');
    alert(print.value);
}


修改value值:


document.getElementById('bt13').onclick = function(){
    //获取input标签
    var print = document.getElementById('print');
    var change = prompt('修改为:');
    print.value = change;
}    


实现效果:



全部代码:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        window.onload = function(){
            //为id=bt1的按钮绑定事件调用函数
            document.getElementById('bt1').onclick = function(){
                //获取id为li1的节点
                var li1 = document.getElementById('li1');
                alert(li1.innerHTML);
            }
            //为id=bt2的按钮绑定事件调用函数
            document.getElementById('bt2').onclick = function(){
                //获取所有li
                var lis = document.getElementsByTagName('li');
                for(var i = 0;i<lis.length;i++){
                    alert(lis[i].innerHTML)
                }
            }
            //为id=bt3的按钮绑定事件调用函数
            document.getElementById('bt3').onclick = function(){
                //获取name=gender的节点
                var genders = document.getElementsByName('gender')
                for(var i = 0;i<genders.length;i++){
                    alert(genders[i].value)
                }  
            }
            //为id=bt4的按钮绑定事件调用函数
            document.getElementById('bt4').onclick = function(){
                //获取id为shouyou的元素节点
                var shouyou = document.getElementById('shouyou');
                //获取手游名
                var games = shouyou.getElementsByTagName('li');
                for(var i=0;i<games.length;i++){
                    alert(games[i].innerHTML)
                }
            }
            //为id=bt5的按钮绑定事件调用函数
            document.getElementById('bt5').onclick = function(){
                //获取id为shouyou的元素节点
                var shouyou = document.getElementById('shouyou');
                //获取子节点包括文本
                var childnodes = shouyou.childNodes;
                for(var i = 0; i<childnodes.length; i++){
                    alert(childnodes[i].innerHTML)
                }
            }
            //为id=bt6的按钮绑定事件调用函数
            document.getElementById('bt6').onclick = function(){
            //获取id为shouyou的元素节点
            var shouyou = document.getElementById('shouyou');
              //获取所有子元素
            var childNodes2 = shouyou.children;
            for(var y = 0 ; y <childNodes2.length ; y++){
                alert(childNodes2[y].innerHTML);
            }
            }
            //为id=bt7的按钮绑定事件调用函数
            document.getElementById('bt7').onclick = function(){
                //获取class为d1的元素节点
                var d2 = document.getElementsByClassName('d1')[0];
                //获取div下的第一个子节点
                var first_child = d2.firstChild;
                alert(first_child.innerHTML);
            }
            //为id=bt8的按钮绑定事件调用函数
            document.getElementById('bt8').onclick = function(){
                //获取class为d1的元素节点
                var d2 = document.getElementsByClassName('d1')[0];
                var last_child = d2.lastChild;
                alert(last_child.value);
            }
            为id=bt9的按钮绑定事件调用函数
            document.getElementById('bt9').onclick = function(){
                //获取id为li2的元素节点
                var li = document.getElementById('li2');
                //获取当前元素的父节点
                var parent = li.parentNode;
                alert(parent.innerText);
            }
            //为id=bt10的按钮绑定事件调用函数
            document.getElementById('bt10').onclick = function(){
                //获取id为li2的元素节点
                var li = document.getElementById('li2');
                // var pre = li.previousSibling;
                // alert(pre);
                var pre1 = li.previousElementSibling;
                alert(pre1.innerHTML);
            }
            //为id=bt11的按钮绑定事件调用函数
            document.getElementById('bt11').onclick = function(){
                //获取id为li2的元素节点
                var li = document.getElementById('li2');
                // var next = li.nextSibling;
                // alert(next.innerHTML);
                var next1 = li.nextElementSibling;
                alert(next1.innerHTML);
        }
            //为id=bt12的按钮绑定事件调用函数
            document.getElementById('bt12').onclick = function(){
                //获取input标签
                var print = document.getElementById('print');
                alert(print.value);
            }
            //为id=bt13的按钮绑定事件调用函数
            document.getElementById('bt13').onclick = function(){
                //获取input标签
                var print = document.getElementById('print');
                var change = prompt('修改为:');
                print.value = change;
            }    
        }
    </script>
    <style>
        .d1{
            display: inline-block;
            margin-left: 100px;
            margin-top: 100px;
            background-color: lightblue;
        }
        .d1>ol>li{
            display: inline-block;
            background-color: antiquewhite;
        }
        .d2{
            display:inline-block;
            position:absolute;
            margin-left: 50px;
            margin-top: 100px;
        }
        .d2>button{
            display: block;
        }
    </style>
</head>
<body>
    <div class="d1"><p>端游列表</p>
        <ol>
            <li id="li1">英雄联盟</li>
            <li id="li2">QQ飞车</li>
            <li>魔兽争霸</li>
            <li>地下城</li>
        </ol>
        <p>手游列表</p>
        <ol id="shouyou">
            <li>原神</li>
            <li>王者荣耀</li>
            <li>qq飞车手游</li>
        </ol>
        <span>性别:</span>
        男<input type="radio" name="gender" value="男">
        女<input type="radio" name="gender" value="女"><br>
        输入内容:<input type="text" id="print" value="在这里输入内容!">
        </div>
    <div class="d2">
        <button id="bt1">获取id为li1的节点 </button>
        <button id="bt2">获取所有li</button>
        <button id="bt3">获取name=gender所有节点</button>
        <button id="bt4">获取手游</button>
        <button id="bt5">获取手游所有子节点</button>
        <button id="bt6">获取所有子元素</button>
        <button id="bt7">获取div下的第一个子节点</button>
        <button id="bt8">获取div下的最后一个节点</button>
        <button id="bt9">获取当前节点的父节点</button>
        <button id="bt10">获取当前节点的前一个兄弟节点</button>
        <button id="bt11">获取当前节点的后一个兄弟节点</button>
        <button id="bt12">返回input中的value值</button>
        <button id="bt13">修改input中的value值</button>
    </div>
</body>
</html>


目录
相关文章
|
3月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
4月前
|
JavaScript
HTML DOM 节点树
HTML DOM 节点是指在 HTML 文档对象模型中,文档中的所有内容都被视为节点。整个文档是一个文档节点,每个 HTML 元素是元素节点,元素内的文本是文本节点,属性是属性节点,注释是注释节点。DOM 将文档表示为节点树,节点之间有父子和同胞关系。
|
4月前
|
JavaScript
HTML DOM 节点
HTML DOM(文档对象模型)将HTML文档视为节点树,其中每个部分都是节点:文档本身是文档节点,HTML元素是元素节点,元素内的文本是文本节点,属性是属性节点,注释是注释节点。节点间存在父子及同胞关系,形成层次结构。
|
4月前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
XML DOM 遍历节点树
|
4月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
4月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
4月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
4月前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
XML DOM 遍历节点树
|
4月前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
XML DOM 遍历节点树
|
4月前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
XML DOM 遍历节点树

热门文章

最新文章

  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    Node.js 中实现多任务下载的并发控制策略
    32
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    25
  • 4
    【JavaScript】深入理解 let、var 和 const
    48
  • 5
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    44
  • 6
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    52
  • 7
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    55
  • 8
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    71
  • 9
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    55
  • 10
    JavaWeb JavaScript ③ JS的流程控制和函数
    62