0

私はjavascriptファイルを使用していくつかのボタン表示を行っています。ユーザーがボタンをクリックすると、現在のボタンの画像が別の画像に置き換えられます(したがって、古いボタンの代わりに新しいボタンが表示される効果が作成されます)。 id ='imgbutton'で要素を作成し、<img>その要素を使用してattr('src',newimage)これらのボタンを表示します。

私はjavascriptファイルをディレクトリに置いていた{{MEDIA_URL}}/jsので、ファイルを使用してテンプレートに追加できます

<script type="text/javascript"  src="{{MEDIA_URL}}/js/myscript.js" ></script>

javascriptコード(jquery 1.7.1)では、このように画像を設定しています

..
var btnimg=$('#imgbutton');
btnimg.attr('src','{{MEDIA_URL}}/img/NewImage.png');

これにより、404 errorJavaScriptコンソールでが発生します。画像の代わりにプレースホルダーが表示されます。djangoテンプレートでは、{{MEDIA_URL}}/img/OldImage.png正しく表示されます。問題が発生するのはjavascriptのみです。誰かがこれが発生する理由を理解するのを手伝ってもらえますか?これを修正するにはどうすればよいですか?

4

1 に答える 1

3

問題は、JSファイルがDjangoのテンプレートエンジンによって処理されないことです。これを行う必要があるときは、通常、ページに直接JSを少し入れて変数値を設定します。その後、<link>タグがロードされたJSファイルによって参照されます。

アップデート:

はい、あなたはこのようなことをしたいです:

<script>
// first set the value you will be using.
var MEDIA_URL = "{{MEDIA_URL}}"; // and anything else you need to set
</script>

<script type="text/javascript"  src="{{MEDIA_URL}}/js/myscript.js" ></script>

これで、JSファイルでそのグローバル値を参照できます。例:

btnimg.attr('src',MEDIA_URL+'/img/NewImage.png');

これらがたくさんある場合は、それらすべてを保持する配列またはオブジェクトによって、名前空間が整然と保たれます。

于 2012-04-15T16:09:56.560 に答える