2015-09-10 24 views
0

在Javascript中,我每次選擇文件時自動添加一個新的輸入文件(jsfiddle)。爲什麼在javascript中添加新文件後輸入文件名不見了?

<script> 
    function addNewInputFile() 
    { 
     document.getElementById("inputs").innerHTML += '<input type="file" onchange="addNewInputFile()" />'; 
    } 
</script> 
<div id="inputs"> 
    <input type="file" onchange="addNewInputFile()" /> 
</div> 

它正在工作,除了在新的輸入文件被追加後消失的文件的名稱。你知道爲什麼這個名字會消失嗎?

+0

推測文件輸入的值在'innerHTML'的往返行程中不存活(最可能出於安全原因)。在更新標記之前,您可能想嘗試手動保存值(如果瀏覽器允許您這樣做)。 –

回答

1

當您在字符串上使用+=時,它不會附加到該字符串,它會生成一個新字符串,該字符串是以前兩個字符串的總和,然後將其存儲在原始變量中。

所以,通過這樣做,實際上是清理,然後重新填充#inputsinnerHTML,使DOM刷新,而且兩個輸入信號,你看到它完成後是兩個投入,因此會丟棄您之前輸入的任何文件。

我會推薦使用jQuery的append()insertAfter()方法向該div添加元素。

+0

正確!我用jQuery測試過它,它的功能就像一個魅力。謝謝! – Clemzd

相關問題