Javascript .innerHTML重置我的<input type =“file”/>

时间:2011-07-26 13:33:54

标签: javascript file-upload multiple-files

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

如果我删除了我改变父div的innerHTML的最后几行代码,那么我的值不会被重置。有谁知道这个问题怎么解决? 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;" />';
}

1 个答案:

答案 0 :(得分:3)

是的......你想要使用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等附加目标表