2017-05-31 281 views
0

我目前正在使用第三方软件表单系统,允许用户上传图像。onChange事件不触发

我想要实现的是上传区域的变化是抓住图像的exif并显示其信息的警报。 (该计划是抢纬度和经度,一旦我能做到这一点。)

我有我的文件准备

$.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)); 
     }); 
     } 
    }); 

所生成的形式结构看起来低于内部电流JS。我的第一个猜测是,我在表单创建者中定义的区域是错误的,或者我只是没有找到它。该文件是在tr类文件中,然后是另一个td,但我试图命名这整个部分的uploadArea。

时上传的图片看起来像"<a class="ellipsis" title="img_1771.jpg">img_1771.jpg</a>"

任何想法?

错误消息:

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

尝试将'getElementsByClassName(“uploadArea”)。onchange ...'更改为'getElementsByClassName(“uploadArea”)[0] .onchange ...'因为'getElementsByClassName'返回数组。 – abhishekkannojia

+0

@abhishekkannojia'getElementsByClassName'返回的NodeList不是数组 – NightKn8

+0

@ NightKn8是的,你是对的,NodeList是一个类似于结构的数组。为了简单起见,我只写了数组。 – abhishekkannojia

回答

0

试试这个: document.getElementsByClassName("uploadArea")[0].onchange = function(e) {

或者 使用id作为选择。

+0

是的,这就是我认为会是解决方案,不幸的是,我们现在得到一个Uncaught TypeError:无法读取未定义的属性'exifdata' – DevAL

相关问题