2010-11-22 9 views
0

special_adsという名前のDjangoアレイをJavascriptでループしようとしています。私は、JavaScriptをという広告を作成し、Javascript配列に格納することができます。 これらのオブジェクトは、特定のの広告を選択し、追加情報を表示するために使用されます。JavascriptでDjango for-loopを使用するには?

<script type="text/javascript"> 
    ADS = new slideshow(); 
    {% for ad in special_ads %} 
    ADS.add_ad(new advert(
       "{{ ad.image }}", 
       "Drie halen twee betalen", 
       "{{ ad.company.name }}", 
       "{{ ad.description }}", 
       "{{ MEDIA_URL }}{{ ad.image }}", 
       "{% thumbnail ad.image 55x55 crop %}", 
       "brown", 
       "white" 
      )); 
    {% endfor %} 
</script> 


//================================================== 
// ad object 
//================================================== 
function advert(id,title,company,description,normal_image_src,thumb_image_src,background_color,text_color) { 
    this.id = id; 
    this.title = title; 
    this.company = company; 
    this.description = description; 
    this.normal_image_src = normal_image_src; 
    this.thumb_image_src = thumb_image_src; 
    this.background_color = background_color; 
    this.text_color = text_color; 
} 

JSONリストを実際に使用することはできません。これは、以下のように、ページの読み込み時にhtmlで同じ配列が必要なためです。

{% for ad in special_ads %} 
    <dd> 
    <a id="std_ad_{{ i }}" class="img"> 
     <img id="{{ ad.image }}" class="enlarge" src="{% thumbnail ad.image 55x55 crop %}" alt="{{ ad.company.name }}" onclick="ADS.display(this)"/> 
    </a> 
    </dd> 
{% endfor %} 

これは正しく動作しないという問題があります。ページは正しくロードされますが、のの広告はアレイに追加されません。また、Djangoの部分が正しく実行されているようです。ページソースの結果は次のようになります。

<script type="text/javascript"> 
    ADS = new slideshow(); 

    ADS.add_ad(new advert(
       "ads/logo_copy.jpg", 
       "Drie halen twee betalen", 
       "Directdoen.nl", 
       "DirectDoen helpt u graag met schoonmaken, tuinonderhoud en klussen. Bij DirectDoen bent u voor hulp in en om uw huis aan", 
       "http://127.0.0.1:8000/media/ads/logo_copy.jpg", 
       "", 
       "brown", 
       "white" 
      )); 

    ADS.add_ad(new advert(
       "ads/Untitled-1.jpg", 
       "Drie halen twee betalen", 
       "Jouwstraat.nl", 
       "Jouwstraat.nl is een website waar buren &amp; straatgenoten met elkaar in contact kunnen 
komen en blijven. Kijk dus snel op . 
", 
       "http://127.0.0.1:8000/media/ads/Untitled-1.jpg", 
       "", 
       "brown", 
       "white" 
      )); 

    ADS.add_ad(new advert(
       "ads/AD.JPG", 
       "Drie halen twee betalen", 
       "Code 06", 
       "DirectDoen helpt u graag met schoonmaken, tuinonderhoud en klussen. Bij DirectDoen bent u voor hulp in en om uw huis aan 
", 
       "http://127.0.0.1:8000/media/ads/AD.JPG", 
       "http://127.0.0.1:8000/media/ads/AD_JPG_55x55_crop_q95.jpg", 
       "brown", 
       "white" 
      )); 

</script> 

私は既に多くを検索しましたが、これを行う方法に関する良いチュートリアルを見つけることができませんでした。私の目標を達成する最良の方法が何であるかを知っている人はいますか?

+0

なぜJSONを使用したくないのですか?ページの他の場所に既存のものをそのまま使用する必要がある場合は、配列のバージョンをJSONとして作成してください。 –

+0

私はすでにJSONを使ってみましたが、本当に動作するようには機能しませんでした。たぶんそれは可能ですが、DjangoとJSONでは専門家ではありません;)私はそれが今のところ働いている。 – Marcel

答えて

0

Django for-loopは明らかに問題ではないので、質問は正しくありません。私は広告やスライドショーのクラスと関係があると思います。あなたのjsコンソールは何のエラーも出さないのですか?

+0

ありがとうございました。コンソールを見て、私はJavascriptが終わりのないリテラルを越えていることを知りました。それは今正しく動作します。 – Marcel

関連する問題