我的代码是:
<body>
<p id="tit"></p>
<script type="text/javascript">
try {
document.getElementById('tit').innerHTML = "<div>test</div>";
}
catch(e) {
alert(e)
}
</script>
</body>
在IE6 / 7/8中 alert [object Error]
,为什么?
答案 0 :(得分:1)
这是(设计)。
元素<p>
应仅包含来自HTML specs的内联元素:
<!ELEMENT P - O (%inline;)* -- paragraph -->
可能不太清楚,但这意味着<p>
不能包含分组元素。现在在<div>
规范中我们可以阅读:
DIV和SPAN元素,与id和class一起使用 属性,提供添加结构的通用机制 文档。这些元素定义内联(SPAN)或 块级(DIV),但没有其他表现的成语 内容。
<p>
元素不是唯一一个只能包含内联元素的元素,标题(<h1>
,<h2>
,...)例如共享相同的行为。
许多浏览器都允许通过innerHTML
属性插入格式错误的HTML ,因此这种奇怪的行为似乎只会影响IE。较新版本(此时为IE 9)支持通过脚本插入错误的HTML代码,因此您的HTML片段不会导致错误(即使它仍然是无效的HTML)。
我的建议是只插入有效的HTML:
您可以将容器元素从<p>
更改为<div>
- 或 -
您可以将插入的元素从<div>
更改为<span>
答案 1 :(得分:0)
e
是一个对象。
alert( e.message);
答案 2 :(得分:0)
它似乎是p元素,如果我使用div它对我有效:
<div id="tit"></div>
<script type="text/javascript">
try {
document.getElementById('tit').innerHTML = "<div>test</div>";
}
catch (e) {
alert(e.message);
}
</script>
相反,它不与p标签一起使用。你也可以使用jQuery及其.append(),因为它运行得很好。