问答详情
源自:9-10 访问父节点parentNode

为什么写成firstChild是无定义而lastChild就能输出?应该第一个无定义最后一个也是一样的才对啊?

为什么写成firstChild是无定义而lastChild就能输出?应该第一个无定义最后一个也是一样的才对啊?

提问者:慕粉1935448701 2017-01-08 14:58

个回答

  • 风飘叶摇
    2017-05-18 14:51:23

    请仔细看慕课的代码,firstChild获取的是父元素之后的空白节点,由于无内容,所以会输出undefined,而最后一个子元素的结束处是</li></ul>,此处无断开,所以lastChild就是我们要获取的内容,假如把最后一个</li>与</ul>断开换行,lastChild的获取结果也是undefined。

    假如最后一个</li>与</ul>断开换行,要获取作业所说的效果,则应该是

    var mylist = document.getElementById("tcon");

    var  a=mylist.parentNode.parentNode.parentNode.childNodes;

    document.write(a[a.length-2].innerHTML);

    我也是刚刚悟出来的,一起学习,谢谢。

  • 慕用9345534
    2017-01-12 11:26:13

    我估计是浏览器的规则吧,相当于你绕了一圈又指代自己,这种做法在编程里很容易报错的。

  • weibo_生活梦幻9_03168943
    2017-01-09 21:41:18

    这个不太清楚,有大神回答没?不过使用lastElementChild和firstElementChild就没有这个问题了