Javascript 如何解决IE7和IE8中关于创建动态文件输入字段的错误?

Javascript 如何解决IE7和IE8中关于创建动态文件输入字段的错误?,javascript,jsp,internet-explorer,file-upload,Javascript,Jsp,Internet Explorer,File Upload,当我试图通过动态输入字段上载多个文件时,Internet Explorer 7和8出现问题。使用dynamic,我的意思是用户可以单击“添加”按钮,该按钮运行一些JavaScript来创建一个新的文件输入字段。因此,结果如下: <input type="file" name="uploads[0]"/> <input type="file" name="uploads[1]"/> <input type="file" name="uploads[2]"/>

当我试图通过动态输入字段上载多个文件时,Internet Explorer 7和8出现问题。使用dynamic,我的意思是用户可以单击“添加”按钮,该按钮运行一些JavaScript来创建一个新的文件输入字段。因此,结果如下:

<input type="file" name="uploads[0]"/>
<input type="file" name="uploads[1]"/>
<input type="file" name="uploads[2]"/>

它可以与Firefox、Chrome和InternetExplorer9配合使用,但在InternetExplorer7和8中,我在服务器端的Struts2中遇到了一个转换错误。我的方法需要一个文件列表,但我收到一个带有文件路径的字符串


这是如何造成的,我如何解决它?

鉴于创建表单元素的JavaScript代码在IE6/7/8中中断,这只能意味着(间接)使用
document.cloneNode()
创建新的输入元素。你不应该那样做。由于一个bug,IE6/7/8不允许您更改
name
属性,它将与原始源元素保持相同

您应该改为使用
document.createElement()
来创建全新的元素。这反过来也有一个IE6/7(而不是8!)特定的bug。不能通过
setAttribute()
设置
name
属性,而是需要直接在
createElement()
函数中指定它

document.createElement('<input name="uploads[' + index + ']">');
document.createElement(“”);
另见:

我尝试过这样的事情。。。当我使用struts时,我使用了struts生成的html,如果没有看到您的JS代码,我们将无法做很多事情。顺便说一句,我不确定你的母语,但在英语中,句子以一个句号结尾,而不是三个句号。