私はRails動的--ajax--ギャラリーへの画像アップロード用のモジュールを備えたアプリを開発しています。 このアプリ--multi-file-upload-demo に基づいて開発しています。 =。私はJavascriptなどにあまり熱心ではないので、その実装から多くのロジックをコピーします。
ラウンダーズデモのすべてのロジックに従ってアプリを作成しました。すべてのgemとjavascriptライブラリを含めましたが、エラーが発生します。
Uncaught TypeError: Cannot read property 'innerHTML' of null
chrome console、tmpl.jsファイルを参照)
tmpl.load = function (id) {
return document.getElementById(id).innerHTML;
};
JSについての私の知識では、どのコードがその機能をトリガーするのかが明確になっていないため、さらに先に進むことができます。
この問題の原因を調査するための次のステップを教えてください。考えられる理由はさまざまであると思われるため、アプリケーションからすべてのコードを貼り付けたくありません。
これは古いですが、私はこれに対する実際の解決策を見つけました。 application.js
のrequireを//=require jquery-fileupload/basic
ではなく//= require jquery-fileupload
に変更します。
このエラーが発生する理由は、スクリプトタグid = "template-upload"またはid = "template-download"またはその両方が欠落しているためです。
デモの例: http://blueimp.github.com/jQuery-File-Upload/
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-upload fade">
<td class="preview"><span class="fade"></span></td>
<td class="name"><span>{%=file.name%}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
{% if (file.error) { %}
<td class="error" colspan="2"><span class="label label-important">Error</span> {%=file.error%}</td>
{% } else if (o.files.valid && !i) { %}
<td>
<div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="bar" style="width:0%;"></div></div>
</td>
<td class="start">{% if (!o.options.autoUpload) { %}
<button class="btn btn-primary">
<i class="icon-upload icon-white"></i>
<span>Start</span>
</button>
{% } %}</td>
{% } else { %}
<td colspan="2"></td>
{% } %}
<td class="cancel">{% if (!i) { %}
<button class="btn btn-warning">
<i class="icon-ban-circle icon-white"></i>
<span>Cancel</span>
</button>
{% } %}</td>
</tr>
{% } %}
</script>
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
{% if (file.error) { %}
<td></td>
<td class="name"><span>{%=file.name%}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td class="error" colspan="2"><span class="label label-important">Error</span> {%=file.error%}</td>
{% } else { %}
<td class="preview">{% if (file.thumbnail_url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" data-gallery="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
{% } %}</td>
<td class="name">
<a href="{%=file.url%}" title="{%=file.name%}" data-gallery="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
</td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td colspan="2"></td>
{% } %}
<td class="delete">
<button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}"{% if (file.delete_with_credentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
<i class="icon-trash icon-white"></i>
<span>Delete</span>
</button>
<input type="checkbox" name="delete" value="1">
</td>
</tr>
{% } %}
</script>
UIバージョンは、存在するこれらのテンプレートの両方に依存します。
私は同じ問題を抱えていて、欠けているものをチェックアウトすることにしました。
お役に立てば幸いです。
私もこれと同じ問題に遭遇しました。ただし、一方のアップロードにはプレビューを使用し、もう一方のアップロードにはプレビューを使用しないため、ファイルアップロードプラグインの基本バージョンをロードすることはできませんでした。 uploadTemplateId
およびdownloadTemplateId
オプションを設定することにより、「プレビュー」機能とtemplate-upload
およびtemplate-download
の試行された処理をケースバイケースで無効にすることができます。ファイルアップロードプラグインをnull
に。
エラーメッセージは、document.getElementById(id)
がnull
を返していることを示しているため、指定された_id.
_を持つ要素は現在ドキュメントにありません。
デバッグするには、return
ステートメントの前にconsole.log(id);
への呼び出しを追加してみてください。これを行うと、問題の原因となっているid
の値を見つけることができます。うまくいけば、エラーは単純なタイプミスの結果です。id
の値では大文字と小文字が区別されることに注意してください。タイプミスが問題ではない場合は、ブレークしたいid
の値がわかっているので、少なくとも条件付きブレークポイントを設定できます。ブレークポイントに到達した後は、呼び出し元の関数にステップスルーして、「どのコードがその関数をトリガーするかを確認する」だけです。お役に立てれば。
このプラグインを数か月使用していますが、今日、ファイルのアップロードが機能しないことに気付き、エラーが発生します
"cannot read property 'innerHTML' of null error".
私はそれを調べました、そしてそれは単純な理由のためです。ファイルパス
http://blueimp.github.io/JavaScript-Load-Image/js/load-image.min.js
に変更されました
http://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js
blueimpのgitで。あなたがここで見ることができるように
https://github.com/blueimp/jQuery-File-Upload
このファイルでパスが変更されました。
https://github.com/blueimp/jQuery-File-Upload/blob/master/index.html
私は正しい道とその働きに変えました。この答えが同じ問題を抱えているここの誰かに役立つことを願っています。