javascript - 上传时只显示图片名称

标签 javascript jquery html css

我想从文件浏览器对话框上传图像。我希望在用户选择图像时预览图像。它在 jsfiddle 中工作,但在我的元素中不工作。

错误是

"Uncaught TypeError: Cannot read property 'addEventListener' of null"

不知道怎么解决。请帮帮我好吗?

function handleFileSelect(evt) {
  var files = evt.target.files; // FileList object

  // Loop through the FileList and render image files as thumbnails.
  for (var i = 0, f; f = files[i]; i++) {

    // Only process image files.
    if (!f.type.match('image.*')) {
      continue;
    }

    var reader = new FileReader();

    // Closure to capture the file information.
    reader.onload = (function(theFile) {
      return function(e) {
        // Render thumbnail.
        var span = document.createElement('span');
        span.innerHTML = ['<img class="thumb" src="', e.target.result,
          '" title="', escape(theFile.name), '"/>'
        ].join('');
        document.getElementById('previewImg').insertBefore(span, null);
      };
    })(f);

    // Read in the image file as a data URL.
    reader.readAsDataURL(f);
  }
}

document.getElementById('files').addEventListener('change', handleFileSelect, false);
.thumb {
  border: 1px solid #000000;
  height: 75px;
  margin: 10px 5px 0 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='file' id="files" name="image" multiple="multiple" />
<div id='previewImg'></div>

最佳答案

我假设您的 document.getElementById ('files') 命令在页面完全呈现之前运行,因此选择器无法在页面上找到任何元素,并且您无法添加 addEventListener 到没有元素。

您必须将选择器放在文档加载函数中,如下所示:

document.addEventListener('DOMContentLoaded', function(){ 
    document.getElementById('files').addEventListener('change', handleFileSelect, false);
}, false);

关于javascript - 上传时只显示图片名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47749189/

相关文章:

javascript - 通过javascript触发输入[type=file]

javascript - 具有返回值的验证函数

php - 未找到图像或类型未知(使用tinymce和dompdf来显示存储在pdf中tinymce文本区域中的html)

html - 100% 高度和填充 = 溢出

javascript - IE 11 无法在 javascript 上正确渲染 div

javascript - 在react.js中通过点击增加数量

javascript - 如何访问框架内的框架?

javascript - 在 Underscore JS 中编写我的 _.reject 版本

javascript - 用户身份验证 + Twitter/Facebook 提要(jQuery Mobile/PhoneGap)?

javascript - 相对于列表大小的模态位置