我有一个关于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;" />';
}
答案 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等附加目标表