我正在编写一个代码,通过单击按钮逐个将多个图像添加到DIV。代码如下。在这种情况下,图像将被替换,但是,我希望保留旧图像并附加新图像。
<html>
<body>
<form>
<input id="inp" type='file'/>
<div id="placehere"></div>
</form>
</body>
</html>
<script language ="javascript">
var elem = document.createElement("img");
elem.setAttribute("height", "150");
elem.setAttribute("width", "150");
elem.setAttribute("alt", "Flower");
function readFile() {
if (this.files && this.files[0]) {
var FR = new FileReader();
FR.addEventListener("load", function (e) {
document.getElementById("placehere").appendChild(elem);
elem.src = e.target.result;
});
FR.readAsDataURL(this.files[0]);
}
}
document.getElementById("inp").addEventListener("change", readFile);
</script>
如何添加新图像而不是替换现有图像?
答案 0 :(得分:2)
function readFile() {
if (this.files && this.files[0]) {
var elem = document.createElement("img");
elem.setAttribute("height", "150");
elem.setAttribute("width", "150");
elem.setAttribute("alt", "Flower");
var FR = new FileReader();
FR.addEventListener("load", function(e) {
document.getElementById("placehere").appendChild(elem);
elem.src = e.target.result;
});
FR.readAsDataURL(this.files[0]);
}
}
document.getElementById("inp").addEventListener("change", readFile);
<form>
<input id="inp" type='file' />
<div id="placehere">
</div>
</form>
您的代码存在的问题是每次用户上传文件时都必须创建图像标记。这就是我在readFile()函数中移动代码的原因: -
var elem = document.createElement("img");
elem.setAttribute("height", "150");
elem.setAttribute("width", "150");
elem.setAttribute("alt", "Flower");
答案 1 :(得分:0)
替换图像的原因是因为每次调用readFile
时,您都会重复使用在脚本初始加载时创建的相同img元素(var elem = document.createElement("img")
)。
解决方案是将document.createElement调用移动到readFile函数中,使您在每次调用时都创建一个新的图像元素。请参阅下面的修订代码。希望这有帮助!
function readFile() {
if (this.files && this.files[0]) {
var FR = new FileReader();
FR.addEventListener("load", function(e) {
var elem = document.createElement("img");
elem.setAttribute("height", "150");
elem.setAttribute("width", "150");
elem.setAttribute("alt", "Flower");
document.getElementById("placehere").appendChild(elem);
elem.src = e.target.result;
});
FR.readAsDataURL(this.files[0]);
}
}
document.getElementById("inp").addEventListener("change", readFile);