我有一个输入类型文件的列表,它仅接受图像..每次添加一个图像时如何查看图像?使用onchange方法

问题描述 投票:1回答:2

我编写了此代码及其工作原理,但是当我选择图像时,它仅出现在第一个元素的前面。

<html lang="en">
<head>
    <title>Change image on select new image from file input</title>
</head>
<body>
    <ul>
        <li>
            <input type="file" accept=".png, .jpg, .jpeg" onchange="loadFile(event)">
            <img class="output" width="100px" />
        </li>
        <li>
            <input type="file" accept=".png, .jpg, .jpeg" onchange="loadFile(event)">
            <img class="output" width="100px" />
        </li>
        <li>
            <input type="file" accept=".png, .jpg, .jpeg" onchange="loadFile(event)">
            <img class="output" width="100px" />
        </li>
    </ul>

<script type="text/javascript">
    var loadFile = function(event) {
        var output = document.getElementsByClassName('output')[0];
        output.src = URL.createObjectURL(event.target.files[0]);
    };
</script>

我只希望每个图像都出现在其输入的前面。

javascript html image onchange
2个回答
0
投票

这只是一种方式,您可以通过许多其他方式来实现。

<html lang="en">
<head>
    <title>Change image on select new image from file input</title>
</head>
<body>
    <ul>
        <li>
            <input type="file" accept=".png, .jpg, .jpeg" onchange="loadFile(event,'output1')">
            <img class="output output1" width="100px" />
        </li>
        <li>
            <input type="file" accept=".png, .jpg, .jpeg" onchange="loadFile(event,'output2')">
            <img class="output output2" width="100px" />
        </li>
        <li>
            <input type="file" accept=".png, .jpg, .jpeg" onchange="loadFile(event,'output3')">
            <img class="output output3" width="100px" />
        </li>
    </ul>

<script type="text/javascript">
    var loadFile = function(event,id) {
        var output = document.getElementsByClassName(id)[0];
        output.src = URL.createObjectURL(event.target.files[0]);
    };
</script>

0
投票

使用Jquery,您可以根据需要添加任意数量的输入。

<html lang="en">

<head>
  <title>Change image on select new image from file input</title>
</head>

<body>
  <ul>
    <li>
      <input type="file" accept=".png, .jpg, .jpeg">
      <img class="output" width="100px" />
    </li>
    <li>
      <input type="file" accept=".png, .jpg, .jpeg">
      <img class="output" width="100px" />
    </li>
    <li>
      <input type="file" accept=".png, .jpg, .jpeg">
      <img class="output" width="100px" />
    </li>
  </ul>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script type="text/javascript">
    $("input[type=file]").on("change", function(e) {
      $(this).next().attr("src", URL.createObjectURL(e.target.files[0]));
    })
  </script>

0
投票

您每次文件更改时都在第一个<img>元素上超载。最好在目标输入元素旁边找到<img>

var loadFile = function(event) {
    var output = event.target.nextElementSibling;
    output.src = URL.createObjectURL(event.target.files[0]);
};
© www.soinside.com 2019 - 2024. All rights reserved.