标签在IE8中找不到动态创建的元素

Label not finding dynamically created element in IE8

本文关键字:创建 元素 动态 找不到 IE8 标签      更新时间:2023-09-26

在网页上,我有一个javascript函数,它添加了一个具有以下层次结构的div:

<div style="display:inline-block;overflow:hidden;">
  <label for="myInput" style="display: inline-block; max-width: 300px;">
    <button disabled style="pointer-events:none;" >Browse to file</button>
    <p style="display:inline">ends up being file name</p>
      <img/>
        <input id="myInput" type="file" style="width:0px;"/>
  </label>
</div>

这个想法是点击标签中的任何东西都会触发文件输入,这在IE8之外的任何地方都很有效。

在IE8中,动态创建标签不会触发文件输入,我注意到,如果我将动态创建的标签的"for"属性更改为指向不是动态创建的文件输入,它将正常工作。

标签似乎找不到动态创建的文件输入。

问题:-如何获取标签以查看动态创建的文件输入?-有没有一种方法可以刷新DOM以允许标签查看文件输入?

注意:如果你使用IE11的仿真模式测试它,它可以工作,但在真正的IE8浏览器中,它不能

我不知道为什么,但当您使用.innerHTML填充label元素时,IE8似乎启用了预期的行为。可能还有其他更好的技巧可以避免HTML操作,但这应该足以作为权宜之计。