Javascript innerHTML重置我的<;输入类型=";文件"&燃气轮机;

Javascript innerHTML重置我的<;输入类型=";文件"&燃气轮机;,javascript,file-upload,Javascript,File Upload,我有一个关于javascript中多个文件上传的问题。我试图通过动态添加输入来创建自己的多文件上传。这很简单,但问题是,每当我添加一个新字段时,我以前输入的“file”类型的字段都会被重置 如果删除更改父div的innerHTML的最后几行代码,则不会重置my的值。有人知道如何解决这个问题吗?下面可以找到javascript代码。提前谢谢 if(document.getElementById("upload_queue").innerHTML.indexOf(_item) == -1) {

我有一个关于javascript中多个文件上传的问题。我试图通过动态添加输入来创建自己的多文件上传。这很简单,但问题是,每当我添加一个新字段时,我以前输入的“file”类型的字段都会被重置

如果删除更改父div的innerHTML的最后几行代码,则不会重置my的值。有人知道如何解决这个问题吗?下面可以找到javascript代码。提前谢谢

if(document.getElementById("upload_queue").innerHTML.indexOf(_item) == -1)
{
    var _row = "<tr id='queue_row_" + items_in_queue + "'>";
    _row += "<td>";
    _row += "<div class='remove_uploaded_image' onclick='remove_from_queue(" + items_in_queue + ")'></div>";
    _row += "</td>";
    _row += "<td>";
    _row += _item;
    _row += "</td>";
    _row += "</tr>";

    document.getElementById("upload_queue").innerHTML += _row;
    document.getElementById("upload_image_" + items_in_queue).style.display = "none";

    items_in_queue++;

    document.getElementById("uploader_holder").innerHTML += 
        '<input id="upload_image_' + items_in_queue + 
        '" name="upload_image_' + items_in_queue + '" accept="image/jpeg" type="file"' + 
        'onchange="add_to_upload_queue()" style="display: inline;" />';
}
if(document.getElementById(“上传队列”).innerHTML.indexOf(\u项)=-1)
{
var_row=“”;
_行+=”;
_行+=”;
_行+=”;
_行+=”;
_行+=\u项;
_行+=”;
_行+=”;
document.getElementById(“上载队列”).innerHTML+=\u行;
document.getElementById(“上传图片”+队列中的项目”).style.display=“无”;
_队列++中的项目_;
document.getElementById(“上传器持有者”).innerHTML+=
'';
}

是的。。。您将希望使用appendChild而不是修改内部HTML:

var myInput = document.createElement("INPUT");
// do stuff to my input

var myContainer = document.getElementById("uploader_holder");
myContainer.appendChild(myInput);

这是你要做的事情的基本要点-如果你需要更具体的东西,请告诉我,但是看起来你已经很好地掌握了JS。。。您将希望在几乎所有情况下都这样做,而不是设置内部HTML。。。所以,建立你的TR也是。。。您必须将TD附加到TR,您必须将TD附加到输入,您必须将目标表附加到TR,等等。

它会被重置,因为您正在有效地从父级删除所有元素并创建新的元素。我不知道+=操作数在添加新元素之前会删除所有内容。我认为javascript只是在div的后面追加了一行代码,正如您在使用+=
innerHTML
时所期望的那样,它所做的不仅仅是将HTML作为字符串追加。它接受新值,将其解析为DOM元素,并将它们附加(设置)到父级<代码>+=与
foo.innerHTML=foo.innerHTML+'..'
基本相同。也就是说,
foo
的内容被“序列化”,新内容被附加,然后所有内容都被分配给
innerHTML
(如前所述,它会删除所有子项并解析传递的值)。我不知道这一点。今天学到了新东西^^谢谢你的解释。