0
このJavaScriptは変数(名前はphysical_location)からSelectFieldに値を設定します。私は物事を整理し、別のファイルに配置しようとすると、それは以前と同様Javascriptはテンプレートで直接入力したときに機能しますが、srcファイルからインポートしたときには機能しません。
<th> Format {{ form.physical_location(class_='form-control physical_location', value=physical_location) }} </th>
<script> var els = document.getElementsByClassName("physical_location");
for (i = 0; i < els.length; i++) {
els[i].value = els[i].getAttribute('value');
}
</script>
しかし、それは動作しません:そうは以下のようにJavaScriptはテンプレートに直接挿入されたときに動作します。例えば、私は、テンプレートファイルでこれを試してみました:
<script src="static/js/populateselect.js" type="text/javascript"></script>
<th> Format {{ form.physical_location(class_='form-control physical_location', value=physical_location) }} </th>
そしてこのpopulateselect.jsで:
var els = document.getElementsByClassName("physical_location");
for (i = 0; i < els.length; i++) {
els[i].value = els[i].getAttribute('value');
}
EDIT **はそれは私の問題を置く私には関係しているの答えで提案されていますテンプレート内のフォームの上にあるsrcその結果、私はテンプレートの嘘を改めました:
<th> Physical Location {{ form.physical_location(class_='form-control physical_location', value=physical_location) }} </th>
<script src="static/js/populateselect.js" type="text/javascript"></script>
しかし、これは問題を解決していません。また、私は間違って何かを行っている必要があります
DOMReadyイベントハンドラでコードをラップしない限り、DOM要素の上にスクリプトを置くと、そのDOM要素が操作されるはずです。 2つのサンプルの間の位置を変更しました。インラインスクリプト対タグsrcとは関係ありません。 –
スクリプトタグを '
私はテンプレートを修正しましたが、その提案は問題を解決していないようです。 (編集記事を参照)。 – apprentice123
答えて
をあなたのコードサンプル2つの違いがある(?):
問題の原因が間違っています。
You can't access DOM elements before they exist。
出典
2017-08-08 12:03:52 Quentin
私はテンプレートを修正しましたが、その提案は問題を解決していないようです。 – apprentice123
関連する問題