Javascript .innerHTML сбрасывает мой - PullRequest
1 голос
/ 26 июля 2011

У меня проблема с несколькими загрузками файлов в javascript. Я пытаюсь создать свою собственную загрузку нескольких файлов путем динамического добавления входных данных. Это все просто, как пирог, но проблема в том, что всякий раз, когда я добавляю новый, мои предыдущие поля ввода типа «файл» сбрасываются.

Если я удаляю последние строки кода, где я изменяю innerHTML моего родительского div, значения моего не будут сброшены. Кто-нибудь знает, как можно решить эту проблему? Код 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 Ответ

3 голосов
/ 26 июля 2011

Да ... вы захотите использовать 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 и т. д.

...