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


目录
相关文章
|
1天前
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
44 33
|
22天前
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
97 24
|
2月前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
1月前
|
Web App开发 移动开发 HTML5
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码。画面中心是悬浮于空的梅花鹿,其四周由白色线段组成了一个6边形将中心的梅花鹿包裹其中。四周漂浮的白雪随着多边形的转动而同步旋转。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
87 2
|
2月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
70 5
|
2月前
ractive.js联系表单动画效果源码
一款ractive.js联系表单动画效果,很有创意的发送邮件、联系内容等表单,基于ractive.js实现的动画效果,以发送信件的方式。
29 1
|
2月前
|
前端开发 JavaScript
用HTML CSS JS打造企业级官网 —— 源码直接可用
必看!用HTML+CSS+JS打造企业级官网-源码直接可用,文章代码仅用于学习,禁止用于商业
184 1
|
2月前
|
JavaScript
JS趣味打字金鱼小游戏特效源码
hi fish是一款打字趣味小游戏,捞出海里的鱼,捞的越多越好。这款游戏用于电脑初学者练习打字。初学者可以根据自己的水平设置游戏难度。本段代码可以在各个网页使用,有需要的朋友可以直接下载使用,本段代码兼容目前最新的各类主流浏览器,是一款非常优秀的特效源码!
39 3
|
2月前
|
JavaScript
JS鼠标框选并删除HTML源码
这是一个js鼠标框选效果,可实现鼠标右击出现框选效果的功能。右击鼠标可拖拽框选元素,向下拖拽可实现删除效果,简单实用,欢迎下载
50 4
|
2月前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
36 2