2014-12-30 2 views
1

Привет друзья Я получаю эту ошибку в следующем коде:Uncaught TypeError: Не удается прочитать свойство «addEventListener» нулевых ошибок для загрузки изображений

Uncaught TypeError: Cannot read property 'addEventListener' of null на линии 11

Строка 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) 
     } 
     } 
    } 
       }); 
       }); 
+2

У вас есть элемент на странице с идентификатором загрузкой? –

+0

Это означает, что 'fileInput' является' null'. Почему вы используете '.addEventListener()' при использовании jQuery? С помощью jQuery вы можете передать * список * имен событий и назначить этот обработчик только одним вызовом функции. – Pointy

+0

@ Alexander id в моем вопросе: 'id =" upload-image "' – innovation

ответ

2

Ваш код ищет и элемент с идентификатором 'загрузки':

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

но фактический идентификатор является 'загрузить-образ'

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

Изменить вашу следующую строку:

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

Если он работает на локальном хосте, а затем попробуйте следующее: 1. Откройте страницу в браузере Chrome 2. нажмите F12 3. на консоли инструмента разработчика введите document.getElementById ("upload"); 4. Каким бы ни был выход, просто переместите указатель мыши на него, чтобы увидеть, где находится этот элемент в пользовательском интерфейсе 5. Повторите то же самое с не-localhost-средой и проверьте/отлаживайте, где проблема.

Это простая проблема, и я уверен, что если вы играете с отладчиком, вы можете легко решить эту проблему самостоятельно.

0

getElementById возвращает null, когда не может найти элемент, который вы ищете. Попытка вызова функций на null вызовет ошибку, как указано выше. Кажется, только из вышесказанного, что у вас нет элемента с ID upload.

+0

Эта функция работает нормально в 'localhost' – innovation

+1

Тогда в среде, отличной от localhost, где вы переместили код, не имеет элемента с этим идентификатором. –

1

Мы должны также проверить, где мы вызов файла JavaScript в заголовке или в конце <body>

Смежные вопросы