繁体   English   中英

未捕获的TypeError:无法读取图像上载的null错误属性'addEventListener'

[英]Uncaught TypeError: Cannot read property 'addEventListener' of null error for image upload

嗨朋友我在以下代码中收到此错误:

Uncaught TypeError: Cannot read property 'addEventListener' of null在第11行Uncaught TypeError: Cannot read property 'addEventListener' of null

第11行是:

fileDiv.addEventListener("click",function(e){
  $(fileInput).show().focus().click().hide();
  e.preventDefault();
},false)

这是输入文件:

<input type="file" class="imageUploadBtn" id="upload-image" name="fotograflar[]" multiple="multiple">

在第5行的代码错误中:

console.log(fileInput);
fileInput.addEventListener("change",function(e){
  var files = this.files
  showThumbnail(files)
},false)

这个错误是什么? 谁能在这方面帮助我? 我正在使用此代码进行图片上传,但此错误不允许我!

$(document).ready(function() 
    {
    jQuery(function($){
    var fileDiv = document.getElementById("upload");
    var fileInput = document.getElementById("upload-image");
    console.log(fileInput);
    fileInput.addEventListener("change",function(e){
      var files = this.files
      showThumbnail(files)
    },false)

    fileDiv.addEventListener("click",function(e){
      $(fileInput).show().focus().click().hide();
      e.preventDefault();
    },false)

    fileDiv.addEventListener("dragenter",function(e){
      e.stopPropagation();
      e.preventDefault();
    },false);

    fileDiv.addEventListener("dragover",function(e){
      e.stopPropagation();
      e.preventDefault();
    },false);

    fileDiv.addEventListener("drop",function(e){
      e.stopPropagation();
      e.preventDefault();

      var dt = e.dataTransfer;
      var files = dt.files;

      showThumbnail(files)
    },false);

    function showThumbnail(files){
      for(var i=0;i<files.length;i++){
        var file = files[i]
        var imageType = /image.*/
        if(!file.type.match(imageType)){
          console.log("Not an Image");
          continue;
        }

        var image = document.createElement("img");
        // image.classList.add("")
        var thumbnail = document.getElementById("thumbnail");
        image.file = file;
        thumbnail.appendChild(image)

        var reader = new FileReader()
        reader.onload = (function(aImg){
          return function(e){
            aImg.src = e.target.result;
          };
        }(image))
        var ret = reader.readAsDataURL(file);
        var canvas = document.createElement("canvas");
        ctx = canvas.getContext("2d");
        image.onload= function(){
          ctx.drawImage(image,100,100)
        }
      }
    }
              });
               });

您的代码正在寻找ID为'upload'的元素:

'var fileDiv = document.getElementById("upload");'

但实际的ID是'upload-image'

<input type="file" class="imageUploadBtn" id="upload-image" name="fotograflar[]" multiple="multiple">

将此行更改为:

var fileDiv = document.getElementById("upload-image");

如果它在localhost上工作,那么试试这个:1。在chrome浏览器中打开你的页面2.点击F12 3.在开发者工具的控制台上,键入document.getElementById(“upload”); 4.无论输出是什么,只需将鼠标光标移动到该位置即可查看UI 5上该元素的位置。对非本地主机环境重复此操作并验证/调试问题所在。

这是一个简单的问题,我相信如果您使用调试器,您可以轻松地自己解决它。

我们还应该检查我们在标头或<body>的末尾调用javascript文件的位置

getElementById找不到您要查找的元素时,它返回null。 试图在null上调用函数会抛出如上所述的错误。 从上面看来,您没有ID upload元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM