<div id='tt'>
</div>function doAdd(){
document.getElementById("tt").innerHTML = "<p><li>1111111</li></p>";
}执行这个方法给tt这个dom赋值是会报错,不能把值赋进去。如果把要赋的值改为"<p>111111111</p>",是能正常执行的。改为"<p><span>11111</span></p>"赋值,也能正常进行。
改为"<li>1111111</li>"赋值也能正常执行。怎么可以让document.getElementById("tt").innerHTML = "<p><li>1111111</li></p>";顺利执行。其它我的目的,只是把一个外界来的字附串赋给"tt"。这个外界的字附串可能是<p><li></li></p>格式的,要兼容这种情况

解决方案 »

  1.   

    违反嵌套规则了,在设置tt的html之前对html代码进行合法性检查和清理。(完全的检查和清理做起来估计是非常复杂的,不如直接把li标签替换为span标签吧)。
      

  2.   

    不好搞。因为IE用innerHTML写操作会检查父元素是否是内容元素的亲爹是就认儿子,不是IE那老小子一点包容心都没有,直接报错拒绝认领,呵呵。遇到这样的情况,只好另想办法,把容器变成写入元素的直系