자바 스크립트에서 여러 파일 업로드와 관련하여 문제가 있습니다. 내가 동적으로 입력을 추가하여 내 자신의 여러 파일 업로드를 만들려고합니다. 이것은 파이처럼 쉽습니다. 그러나 문제는 새로 추가 할 때마다 "file"유형의 이전 입력 필드가 재설정된다는 것입니다.자바 스크립트 .innerHTML이 내 <input type = "file">
내 부모 div의 innerHTML을 변경하는 코드의 마지막 줄을 제거하면 내 값이 재설정되지 않습니다. 누구든지이 문제를 어떻게 해결할 수 있는지 알고 있습니까? 자바 스크립트 코드는 아래에서 찾을 수 있습니다. 미리 감사드립니다.
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;" />';
}
부모로부터 모든 요소를 효과적으로 제거하고 새로운 요소를 생성하기 때문에 재설정됩니다. –
+ = 피연산자가 새 요소를 추가하기 전에 모든 것을 제거한다는 것을 알지 못했습니다. 나는 자바 스크립트가 div 뒤에 코드 줄을 추가했다고 생각했다. + = –
을 사용하면'innerHTML'은 단순히 HTML을 문자열로 추가하는 것 이상의 기능을 수행한다. 새 값을 가져 와서 DOM 요소로 구문 분석하고 부모 요소에 추가 (설정)합니다. '+ ='는 기본적으로'foo.innerHTML = foo.innerHTML + '....''과 같습니다. 나는. 'foo'의 내용이 "serialize"되고, 새로운 내용이 추가 된 다음 모든 것이 innerHTML에 할당됩니다. 이미 언급 한 것처럼 모든 자식을 제거하고 전달 된 값을 파싱합니다. –