如下代码
<!DOCTYPE HTML> <html> <head> <meta charset="gbk" /> <title>IE6/7/8中innerHTML "Bug"</title> </head> <body> <div id="d"> <div id="d2">d2 text</div> </div> <script> var d2 = document.getElementById('d2'); var d = document.getElementById('d'); d.innerHTML = ''; alert(d2.innerHTML); </script> </body> </html>
结果:
IE9/Firefox/Safari/Chrome/Opera : 弹出 "d2 text" 文本
IE6/7/8 :弹出""空字符串
IE6/7/8中使用innerHTML清空父元素div[id=d],子元素div[id=d2]的innerHTML也被清了,子元素被清包括两个部分:
1,dom结构中清掉了
2,内存中innerHTML置为空字符串(d2.innerHTML)
而 2 不应该被置为空字符串的,这是"Bug"。这里的"Bug"加引号,因为innerHTML当时并非标准的。
这个问题是TX的 nick 发现的。
相关: