(一)标题写的这四个属性最常用的就属innerHTML了,它给我们带来了很多方便,但是要尽量避免过度使用。
①在读的模式下,innerHTML可以返回调用这个属性的元素的所有子节点。不同浏览器返回的格式不太一样, 有的浏览器忽略缩进。高程中说IE和Opera会把标签转为大写,经过测试,并未发现这种现象,除了IE5的Quirks下;
②在写的模式下,写入的会替换掉原有的所有子元素,如果写入标签则会解析成HTML元素。innerHTML的局限性出现在写入<script>与<style>时。(并不是所有元素都支持innerHTML)
(二)outerHTML这个元素就有点少用了,它和innerHTML一样被纳入标准,各个浏览器也得到不错的支持。
这个属性在写入时会把整个元素和他的后代都替换。
例1:<div id="doc">
<p>hello!I am yomtaaa!</p>
</div>
<p>hello!I am yomtaaa!</p>
</div>
alert(oDiv.outerHTML); //会把调用的元素和它调用的子节点都一并弹出,这也是和innerHTML的区别
关于我认为它少被采用的原因:
①作用点不明确,对一个初学者来说,如果他不知道这个属性会把调用的元素也弹出,则会发生什么。。。
②性能没innerHTML好,执行时间几乎快接近innerHTML的两倍
③太麻烦,为什么呢?(看下面的例子)
例2:<div id="doc">
<p>hello!I am yomtaaa!</p>
</div>
oDiv.outerHTML='<a href="#"></a>'; //会整个把div替换掉 那这个div是不是不存在了 即使他不会报错 但逻辑上还是冲突的,那么获取这个id的API已经是null了,所以innerHTML相对省事很多。
(三)没有纳入规范的innerText
这个属性得不到FF的支持,但有时却可能比innerHTML更好用。
①在读的模式下,返回后代的所以文本节点,按照顺序读取然后连接起来
②在写的模式下,会把调用这个属性的元素的后代节点都清除,然后插入文本。
它只会生成一个文本节点,为了确保能只生成一个节点,它会把html标签都过滤掉,所以在写入时html标签是无效的。
(四)textContent(低版本浏览器不支持)
这是一个类似innerText的属性,和innerText出入不大,因为他的存在可以解决FF不支持innerText的问题。
textContent同样会过滤掉标签,我所说的过滤掉标签是指html标签无效(以文本方式显示)。
它的返回值以innerText一样,除了缩进。
(五)outerText(兼容性和innerText差不多)
outerText同样也是不能得到FF的支持,在读取时,返回的与innerText的结果一样。
在写入时,他却会把调用的元素也一并去除。
浙公网安备 33010602011771号