在许多输入中加载和预览图像
Load and preview images in many inputs
我有一个带有 4 个输入的表单来加载图像并预览它们。下面的脚本有效,但仅适用于第一次输入
<input type="file" id="images-upload-input-1" accept=".png, .jpg, .jpeg" name="image_1" onchange="previewFile(event);" value="img/<?echo $row['zdjecie'];?>" style='display: none;'/>
function previewFile() {
const preview = document.getElementById('img-new-1');
const file = document.getElementById('images-upload-1').files[0];
const reader = new FileReader();
reader.addEventListener("load", function ()
{
// convert image file to base64 string
preview.src = reader.result;
}, false);
if (file)
{
reader.readAsDataURL(file);
}
};
有什么建议吗?
我更改了你的代码:
我在每个文件输入中添加了一个 data-img
,这样它就可以通过它的 id 绑定到一个 img。然后我更新了预览功能以使用传递的事件 e
来使用已更改的输入而不是直接引用单个 ID。
function previewFile(e) {
const preview = document.querySelector(e.target.dataset.img);
const file = e.target.files[0];
const reader = new FileReader();
reader.addEventListener("load", function ()
{
// convert image file to base64 string
preview.src = reader.result;
}, false);
if (file)
{
reader.readAsDataURL(file);
}
};
<input data-img="#img-new-1" type="file" id="images-upload-input-1" accept=".png, .jpg, .jpeg" name="image_1" onchange="previewFile(event);" value="img/"/>
<input data-img="#img-new-2" type="file" id="images-upload-input-2" accept=".png, .jpg, .jpeg" name="image_2" onchange="previewFile(event);" value="img/"/>
<img id="img-new-1">
<img id="img-new-2">
我有一个带有 4 个输入的表单来加载图像并预览它们。下面的脚本有效,但仅适用于第一次输入
<input type="file" id="images-upload-input-1" accept=".png, .jpg, .jpeg" name="image_1" onchange="previewFile(event);" value="img/<?echo $row['zdjecie'];?>" style='display: none;'/>
function previewFile() {
const preview = document.getElementById('img-new-1');
const file = document.getElementById('images-upload-1').files[0];
const reader = new FileReader();
reader.addEventListener("load", function ()
{
// convert image file to base64 string
preview.src = reader.result;
}, false);
if (file)
{
reader.readAsDataURL(file);
}
};
有什么建议吗?
我更改了你的代码:
我在每个文件输入中添加了一个 data-img
,这样它就可以通过它的 id 绑定到一个 img。然后我更新了预览功能以使用传递的事件 e
来使用已更改的输入而不是直接引用单个 ID。
function previewFile(e) {
const preview = document.querySelector(e.target.dataset.img);
const file = e.target.files[0];
const reader = new FileReader();
reader.addEventListener("load", function ()
{
// convert image file to base64 string
preview.src = reader.result;
}, false);
if (file)
{
reader.readAsDataURL(file);
}
};
<input data-img="#img-new-1" type="file" id="images-upload-input-1" accept=".png, .jpg, .jpeg" name="image_1" onchange="previewFile(event);" value="img/"/>
<input data-img="#img-new-2" type="file" id="images-upload-input-2" accept=".png, .jpg, .jpeg" name="image_2" onchange="previewFile(event);" value="img/"/>
<img id="img-new-1">
<img id="img-new-2">