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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaScriptinnerHTML是一种属性,它允许您通过JavaScript代码更改HTML元素的内容。使用innerHTML,您可以将新的HTML代码插入到现有元素中,也可以更改现有元素的文本内容。它是一种非常强大和灵活的工具,可以帮助您动态地更新和修改网页内容。 ### 回答2: JavaScript innerHTML 是一种非常常用的方法,用于获取或设置 HTML 元素的内容。它的主要作用是通过 JavaScript 来修改 HTML 元素的内容。例如,当我们需要动态更新网页上的某些元素的内容,可以使用 innerHTML 方法来实现。 使用 innerHTML 方法获取元素的值,我们只需要获取该元素的 innerHTML 属性即可。例如: var element = document.getElementById('example'); var content = element.innerHTML; console.log(content); 这里我们首先使用 getElementById 方法获取了 ID 为 example 的 HTML 元素,然后使用 innerHTML 属性获取该元素的内容,并将其输出到控制台中。 使用 innerHTML 方法设置元素的值,我们只需要通过该方法给该元素的 innerHTML 属性设置一个新的值即可。例如: var element = document.getElementById('example'); element.innerHTML = '新的内容'; 这里我们使用 getElementById 方法获取了 ID 为 example 的 HTML 元素,然后将其 innerHTML 属性设置为 '新的内容'。 需要注意的是,innerHTML 方法会覆盖当前元素的所有子元素,包括文本节点和其他 HTML 元素,因此在使用 innerHTML 方法需要格外小心,以免不小心破坏网页的布局和结构。另外,innerHTML 方法也会在一定程度上影响网页的性能,因此在操作大量 HTML 元素需要特别注意。 ### 回答3: JavaScriptinnerHTML是一种非常强大的属性,它使网页开发者可以通过JavaScript脚本语言来修改HTML文档中的内容。 使用innerHTML,可以实现对HTML文档内的内容实现动态的改变或者替换。比如,需要根据用户在网页上选择的不同选项来不断地向页面上添加新的列表项。这候就可以使用innerHTML属性,将这些新项目添加到现有的列表项中。 innerHTML属性的另一个重要的功能是,它可以让JavaScriptHTML代码之间实现更好的交互性。因为,使用innerHTML属性可以实现对HTML页面上元素的定位和修改,这使得能够更容易地动态地调整网页的布局和样式。 当然,需要注意的是,innerHTML属性也有其局限性。它不能直接修改网页的CSS样式或者描述编写模式,因此在某些情况下,需要使用其他的技术来实现相关的功能。 总的来说,innerHTML是一种非常重要的属性,它在JavaScript开发中扮演了重要的角色。如果能够有效地掌握这项技术,那么就可以大大提高网页开发的效率并且实现更为灵活的页面效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值