我和往常一样,一边喝早茶,一边上网和女粉丝侃大山,在手机和平板电脑上整理修改 《C++》 、 《C语言》 、 《Java》 等多年前写的教程,并研究学习各种品牌的小程序。
突然女粉丝问:“陈老师!听说你是公司里的HtmlDom大专家?”。
我答:“略懂略懂,略知1、2”。
女粉丝问:“陈老师!你知道nodeValue和InnerHTML的区别吗?”。
我答:“知道!”。
女粉丝问:“可以教我吗?”。
我答:“好的!下面写个教程,你回头等我更新网文吧!”。
nodeValue只能获得文本节点的值,不能获得元素节点的值,比如有下面的html标签:
< div id=ChenJie >
这是一段文字
< span>
< /span>
< /div>
document.getElementById(“ChenJie”).nodeValue
用document.getElementById(“ChenJie”).nodeValue 得到的将是null,因为div是个元素节点。
document.getElementById(“ChenJie”).childNodes[0].nodeValue
HtmlDom中childNodes属性返回节点的子节点集合,子节点集合看成是一个.childNodes[0~n]的数组,childNodes[0]就是这个数据结构中的第一个数组。\
只有用document.getElementById(“ChenJie”).childNodes[0].nodeValue 才能读取出.childNodes[0]中包含的字符串“这是一段文字”,
ocument.getElementById(“ChenJie”).innerHTML
也就是说只有div内的第一个子节点才是文本节点。
而HtmlDom中innerHTML属性反回两标签元素中的值
在上面< span >< /span >标签元素中是没有值,而< div id=ChenJie >< /div >标签元素有值“这是一段文字”。
用document.getElementById(“ChenJie”).innerHTML读取到元素标签中的值“这是一段文字”(请注意里面是包含HTML标签元素的)。
但是用 document.getElementById(“ChenJie”).childNodes[0].innerHTML 得到的则是 undefined ,因为childNodes属性返回节点的子节点集合,childNodes[0]中包含了对.innerHTML属性不明确的东西。
杰哥学习笔记分享到这里,会不定期更新,喜欢的粉丝们请收藏、关注、点赞,我的作品。
更多内容请看
虎哥引流器