2017-05-31 17 views
0

私は現在、ユーザーが画像をアップロードできるサードパーティのソフトウェアフォームシステム内で作業しています。onChangeイベントがトリガーされない

私が達成しようとしているのは、アップロード領域の変更がイメージのexifを取得し、その情報のアラートを表示することです。 (計画は、私はそれを行うことができたら、緯度とLNGをつかむためにあることを。)

私は

$.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'は配列を返すので、' getElementsByClassName( "uploadArea").onchange ... 'を' getElementsByClassName( "uploadArea")[0] .onchange ... 'に変更してみてください。 – abhishekkannojia

+0

@abhishekkannojia 'getElementsByClassName'は配列ではなくNodeListを返します – NightKn8

+0

@ NightKn8うん、そうです、NodeListは構造体のような配列です。簡単にするために、私は配列を書きました。 – abhishekkannojia

答えて

0

はこれを試してみてください:セレクタとして document.getElementsByClassName("uploadArea")[0].onchange = function(e) {

それとも 使用同上。

+0

私は解決策になると思いましたが、不幸にもUncaught TypeErrorを取得しています:未定義のプロパティ 'exifdata'を読み取ることができません – DevAL

関連する問題