[英]Why can't I select nodes child by document.getElementById(“node's_id”).child?
假设我有一个简单的html代码,将父div
和子span
元素设置为:
<div id="my_div"><span> Nothin' but the G thang </span></div>
据说html DOM中的每个元素都是一个对象。 因此,我们可以选择子对象作为parent.child
。 例如window.document
, window.document.body
, window.document.head
等,那么我的问题是为什么document.getElementById("my_div").span
返回未定义?
同样, window.document.body
可以,但是在window.document.body.div
之后,我不能再下一层了。
用.
( dot-notation
),您正在尝试访问document.getElementById
返回的object
( Node/Element
)的span
属性。 由于没有与返回的对象关联的span
属性,因此document.getElementById("my_div").span
将是undefined
使用document.querySelector
, 返回与指定组匹配的 document.querySelector
中的第一个元素(使用文档标记中的第一个元素,通过深度优先顺序遍历文档的节点|通过子节点数量的顺序遍历顺序节点)选择器
console.log(document.querySelector('#my_div span'));
<div id="my_div"><span> Nothin' but the G thang </span> </div>
或Node.chilren
,它是只读属性,它返回Node的子元素的实时HTMLCollection。
console.log(document.getElementById('my_div').children[0]);
<div id="my_div"><span> Nothin' but the G thang </span> </div>
您可以选择像这样的跨度
var span = document.getElementById("my_div").querySelector('span'); console.log(span);
<div id="my_div"><span> Nothin' but the G thang </span> </div>
或者您也可以使用firstChild
var span = document.getElementById("my_div").firstChild; console.log(span);
<div id="my_div"><span>Nothin' but the G thang </span></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.