2017-12-22 10 views
0

テンプレートに関連するJavaScriptオブジェクトを設定するテンプレートファイルの中にJavaScriptがあります。htmlテンプレート内でjavascriptを処理する方法

 <hr class="statcard-hr mb-0"> 
     </div> 
     <canvas id="chart-ph" width="378" height="94" class="sparkline" 
     style="width: 200px; height: 50px;"></canvas> 
    </div> 
    </div> 
</div> 

</table> 
</div> 

<script> 
    //populate initial chart data 
    getSensorData('recent'); 

    //create chart 
    createChart('chart-temp', 10, 30); 
    createChart('chart-hum', 20, 60); 
    createChart('chart-ec', 500, 2800); 
    createChart('chart-ph', 4, 8); 
</script> 

{% endblock %} 

問題は、テンプレートファイルは(基本テンプレートの下にロードされている)、メインの.jsファイルの前にロードされていることです。したがって、createChartとgetSensorDataは定義されていません。私はあなたが通常これを構造化しようとしている方法が不思議です。

テンプレートにJavaScriptオブジェクトを設定するのは理にかなっていますが、通常は別の方法で行うのでしょうか?

+0

以下のような準備ができて、文書内の呼び出しを配置する必要があります。したがって、スクリプトなしでレンダリングできるようにテンプレートを作成する場合は、後でそのスクリプトをいつでも追加して、その機能をレンダリングされたテンプレートに追加することができます。あなたのページに実際に見えるようにjavascriptを実行する必要がある場合は、使用するアーキテクチャに欠陥があります。 – Shilly

+0

あなたはあなたのhtmlファイルの中で 'javascript'を使っています。単純に '.js'ファイルに移動するか、ファイルを最初にロードしてください。 –

答えて

0

ドキュメントが「準備完了」になるまでページを安全に操作することはできません。ちょうどあなたのテンプレートの上に自分のコードを配置

$(document).ready(function() { 
    //Your script 
}); 

か、$(関数())を使用することができます

:だから、これを使用することができます。それを底から取り出し、上に置きます。

0

あなたの機能はあなたが通常別々のファイルにJavaScriptを持っているだけで、あなたが実際にそれを必要とするとき、DOMにスクリプトを挿入したい

<script> 
    $(function() { 
     //populate initial chart data 
     getSensorData('recent'); 

     //create chart 
     createChart('chart-temp', 10, 30); 
     createChart('chart-hum', 20, 60); 
     createChart('chart-ec', 500, 2800); 
     createChart('chart-ph', 4, 8); 
    }); 
</script> 
+0

こんにちは!あなたの答えをありがとう!私はこれを試みたが、jQueryもロードされていない。代わりにヘッドセクションにロードして、常にロードされていることを確認する必要がありますか? 今は、.cssファイルのみを読み込みます。 –

+0

このスクリプトブロックの前またはヘッダーにjQueryを追加できます。 – Nitesh

関連する問題