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

时间:2014-10-13 15:22:50

标签: javascript html css dynamic internet-explorer-8

在网页上我有一个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'属性更改为指向未动态创建的文件输入,则它可以正常工作。 / p>

标签出现无法找到动态创建的文件输入。

问题:   - 如何让标签看到动态创建的文件输入?   - 有没有办法刷新DOM以允许标签看到文件输入?

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

1 个答案:

答案 0 :(得分:0)

我不知道为什么,但是当您使用label填充.innerHTML元素时,IE8似乎启用了预期的行为。可能有其他更好的黑客可以避免HTML操作,但这应该足以作为一个止拍。