JavaScript在IE下设置innerHTML时出现"未知的运行时错误"


问题

想动态的改变<p>标签的innerHTML内容,但在IE下却报"未知的运行时错误".

Html页面如下程序如下:

<html>
    <head>
    <title>test</title>
    </head>
    <body>
    <script>
    document.getElementById('trone').innerHTML = '<span>haha</span>';
    </script>
    <p id='trone'></p>
    </body>
</html>

原因

<script>标签在<p>标签之前, JavaScript代码执行时, 无法访问到<p>标签, 因为这时候<p>标签还未被浏览器解析.

建议将<script>标签放在页面底部, 除了可以避免以上问题, 还能提升性能(可参考Best Practices for Speeding Up Your Web Site 中 "Put Scripts at the Bottom").

扩展知识

即使<script>出现在被操作标签之后, 在IE下仍然可能出现该问题.

这主要因为IE在对innerHTML进行写操作的时候会检查被操作元素是否符合作为内容对象容器的要求. 比如, 如果在一个<p>标签里加入<li>标签,这很可能会出现以上的错误.如果发现这类错误出现,我们可以尝试做以下事情:

  1. 检查你尝试加到innerHTML的html代码是否包含破损的html标签,如没有<ul></ul>包围的<li></li>.
  2. 把被赋innerHTML的容器改成那些比较"包容"的标签,如<span>, <div>标签. 需要特别注意的是, 即使<tbody>,<table>, <tr>标签里面加正确格式的<td>标签都有可能出错, 所以应该避免使用这些标签作为容器.

参考

  1. JavaScript在IE下设置innerHTML时出现"未知的运行时错误"
  2. Best Practices for Speeding Up Your Web Site
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值