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

简介: 文章目录获取元素节点的子节点获取父节点和兄弟节点扩展:获取和修改input文本标签中的值

获取元素节点的子节点

  • 通过具体的元素节点调用
  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('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. 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);
}

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

1aed05fdf98e4fbe8f02d69fa8d23e58.gif

获取父节点和兄弟节点通过具体的节点调用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);
}

b81074db5a3748b8bb6fb967117939b9.gif

扩展:获取和修改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;
}    

8ae4f8c5173a48d5a0125e7decb5570e.gif

全部代码:

<!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>



8ae4f8c5173a48d5a0125e7decb5570e.gif

相关文章
|
JavaScript
js递归根据父级id获取所有的子节点
js递归根据父级id获取所有的子节点
|
JavaScript
js tree 根据子节点找到所有父节点
js tree 根据子节点找到所有父节点
322 0
|
JavaScript 算法 前端开发
js 递归获取子节点所有父节点,深度遍历获取第一个子树
js 递归获取子节点所有父节点,深度遍历获取第一个子树
626 0
|
JavaScript 前端开发
JavaScript 获取子节点、父节点、兄弟节点方法总结
JavaScript 获取子节点、父节点、兄弟节点方法总结
601 0
JavaScript 获取子节点、父节点、兄弟节点方法总结
|
Web App开发 JavaScript 前端开发
Javascript 访问父节点parentNode
Javascript 访问父节点parentNode
161 0
|
JavaScript 前端开发
Javascript 访问子节点的第一和最后项
Javascript 访问子节点的第一和最后项
99 0
|
Web App开发 JavaScript 前端开发
Javascript 访问子节点childNodes
Javascript 访问子节点childNodes
94 0
Javascript 访问子节点childNodes
|
JavaScript
js遍历树形结构并返回所有的子节点id值
js遍历树形结构并返回所有的子节点id值
js遍历树形结构并返回所有的子节点id值
|
JavaScript 前端开发
JavaScript 技术篇-js只获取本节点text文本,不包含子节点
JavaScript 技术篇-js只获取本节点text文本,不包含子节点
320 0
JavaScript 技术篇-js只获取本节点text文本,不包含子节点
|
JavaScript 前端开发 索引
JavaScript 技术篇-js获取表格元素tr、th、td相对于父节点的索引。
JavaScript 技术篇-js获取表格元素tr、th、td相对于父节点的索引。
712 0
JavaScript 技术篇-js获取表格元素tr、th、td相对于父节点的索引。