2017-05-31 3 views
0

Ich arbeite derzeit in einem Drittanbieter-Software-Formularsystem, mit dem Benutzer ein Bild hochladen können.onChange-Ereignis wird nicht ausgelöst

Was ich versuche zu erreichen, ist auf den Upload-Bereich ändern, um das Exif des Bildes zu greifen und eine Warnung seiner Informationen anzuzeigen. (Mit dem Plan, die lat und lng zu greifen ist, wenn ich das tun kann.)

Ich habe die aktuellen JS in meinem Dokument bereit

$.getScript('http://WIN-VEQPNOG6JPR/Forms/js/exif.js', function() { 
    document.getElementsByClassName("uploadArea").onchange = function(e) { 
     EXIF.getData(e.target.files[0], function() { 
      alert(EXIF.pretty(this)); 
     }); 
     } 
    }); 

Die Struktur für das erzeugte Formular unten aussieht. Meine erste Vermutung ist, dass der Bereich, den ich im Formularersteller definiert habe, falsch ist oder ich finde ihn einfach nicht. Die Datei ist in der tr-Klasse-Datei eingebettet, dann eine andere td, aber ich hatte versucht, den gesamten Abschnitt uploadArea zu nennen.

Das Bild beim Hochladen sieht aus wie "<a class="ellipsis" title="img_1771.jpg">img_1771.jpg</a>"

Irgendwelche Ideen?

Fehlermeldung:

Uncaught TypeError: Cannot read property 'exifdata' of undefined 
    at imageHasData (exif.js?_=1496235241982:339) 
    at Function.EXIF.getData (exif.js?_=1496235241982:936) 
    at HTMLLIElement.document.getElementsByClassName.onchange (0:192) 
+4

Versuchen Sie 'getElementsByClassName (" uploadArea ") zu ändern. Onchange ...' to 'getElementsByClassName (" uploadArea ") [0] .onchange ...' da 'getElementsByClassName' das Array zurückgibt. – abhishekkannojia

+0

@abhishekkannojia 'getElementsByClassName' gibt NodeList nicht ein Array zurück – NightKn8

+0

@ NightKn8 Yup, Sie haben Recht, NodeList ist eine Array-ähnliche Struktur. Zur Vereinfachung habe ich einfach Array geschrieben. – abhishekkannojia

Antwort

0

Try this: document.getElementsByClassName("uploadArea")[0].onchange = function(e) {

Oder Verwenden Id als Selektor.

+0

Yep, das ist, was ich dachte, wäre die Lösung, leider bekommen wir jetzt einen Uncaught TypeError: Kann die Eigenschaft 'exifdata' von undefined nicht lesen – DevAL