博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于parentNode和firstChild的一些坑
阅读量:6821 次
发布时间:2019-06-26

本文共 1059 字,大约阅读时间需要 3 分钟。

hot3.png

首先附上个人代码:

<!DOCTYPE html>

<html>
<head>
    <title> test father dom</title>
</head>
<body>
    <div id="c" name="parent">
        <div id="a" name="baba">
            <input type="text" name="baby" value="ni">
        </div>
        <div id="b" name="mama">
            <input type="text" name="baby1" value="hao" οnchange="a(this);">
        </div>
    </div>
</body>
 
<script>
    function a(obj) {
         //var a = obj.parentNode.parentNode.firstChild.firstChild.value;
         //var a = obj.parentNode.parentNode.childNodes;
         var a = obj.parentNode.parentNode.childNodes[1].childNodes[1].value
         alert(a);
    }
</script>

</html>

第一步:

     解放a(obj);第一行代码,注解另外两行.

     测试结果:

test.html:19 Uncaught TypeError: Cannot read property 'value' of null
    at a (test.html:19)
    at HTMLInputElement.onchange (test.html:12)
a @ test.html:19
onchange @ test.html:12

照我的猜想应该能找到值ni,但是实际却不是这样.

 第二步测试:

     解放第二行代码,获得全部的子节点看看情况

     结果:

  1. 0:text
  2. 1:div#a
  3. 2:text
  4. 3:div#b
  5. 4:text
  6. length:5
  7. __proto__:NodeList

经过思考发现1,3,5很奇怪,为什么呢

经过文档的查看发现childNodes会找到所有此节点下的子节点,但是要注意这个方法找节点的时候会把换行当做一个空的文本节点.故发现问题所在.

 第三步

     解放第三个,注释1,2个得到我们想要的结果

 

 以上代码可以直接拿到本地的浏览器直接测试.

转载于:https://my.oschina.net/Spider001/blog/1546738

你可能感兴趣的文章
angularjs中ng-repeat-start与ng-repeat-end用法实例
查看>>
linux centos6.5 安装gcc-c++时出现 yum install gcc-c++ cannot find a valid baseurl for repo...
查看>>
Jsp动态生成表格
查看>>
MongoDB环境配置
查看>>
5_4 calvc
查看>>
Educational Codeforces Round 36 (Rated for Div. 2)
查看>>
深入理解javascript原型和闭包——从【自由变量】到【作用域链】
查看>>
java多线程
查看>>
Codevs1029 遍历问题
查看>>
远程连接提示“为Administrator连接到现存会话发生错误(Id 0).操作成功”
查看>>
nginx配置ssl证书
查看>>
fastjson SerializerFeature详解
查看>>
spring源码读书笔记
查看>>
HDOJ-1015 Safecracker 【DFS】
查看>>
读书笔记-->Java经典编程300例--明日科技--清华大学出版社(第一版)
查看>>
如何在存储过程中自动添加分区
查看>>
[并查集] POJ 1611 The Suspects
查看>>
C#设计模式总结
查看>>
团队开发------第一次冲刺第4天
查看>>
R对term进行层次聚类完整实例(tm包)
查看>>