2016-12-10 2 views
1

私のテンプレートにjinjaとjavascriptを使用して、いくつかのボックスを1つの色にし、いくつかを別のものにするデータの行私のスプレッドシートの列がある場合たとえば、次のように私のページに行jinjaとjsのループを使って異なる色のdivを作成する

year men women 
1988 60 40 

は、その後、60緑色のボックス(男性の#)と40黄色の箱(男性の#)年になります。私は現在、ジンジャーのループでこれをやっていますが、色の違う箱から1列だけ吐き出すだけです。

{% for row in years %} 

<script> 
    var htmlElements = ""; 
    var container = document.getElementById("boxes"); 
    for (var i = 0; i < {{ row.men }}; i++) { 
     htmlElements += '<div class="men"></div>'; 
    } 
    for (var i = 0; i < {{ row.women }}; i++) { 
     htmlElements += '<div class="women"></div>'; 
    } 
    container.innerHTML = htmlElements; 
</script> 

<div class="row box-row"> 
    <div class="two columns"> 
     <p id="{{ row.id }}" class="year-text">{{ row.year }}</p> 
    </div> 
    <div id="boxes" class="ten columns"></div> 
</div> 
<div class="row"> 
    <div class="six columns offset-by-five"> 
     <a href="#" class="scrollToTop">Jump To Top</a> 
    </div> 
</div> 

{% endfor %} 

このコードは、ページ上のすべての年を生成し、異なる色のボックスのみ最初行。私は自分のデータのヘッダー行が上記のスクリプトタグにあるものと一致することを確認しました。スクリプト内でジンジャ変数を正しく使用しているかどうかはわかりません。どんな助けもありがとう!

+0

Jinja HTMLタグですべてをやっていない理由は何ですか? jsは必要ですか? – dizzyf

+0

私はjsコードをJinjaに変換し、(divの特定の数の)同じ要件を満たす方法がわかりません。私はそれが実行可能な場合、Jinjaですべてを行うことを好むdef。どのようなアイデア? – impostorsyndrome

答えて

0

あなたは確かにジンジャーでそれを行うことができます。

{% for row in years %} 

    <div class="container"> 
    {% for male_boxes in row.men %} 
     <div class="men"></div> 
    {% endfor %} 
    {% for female_boxes in row.women %} 
     <div class="women"></div> 
    {% endfor %} 
    </div> 

    <div class="row box-row"> 
     <div class="two columns"> 
      <p id="{{ row.id }}" class="year-text">{{ row.year }}</p> 
     </div> 
     <div class="boxes" class="ten columns"></div> 
    </div> 
    <div class="row"> 
     <div class="six columns offset-by-five"> 
      <a href="#" class="scrollToTop">Jump To Top</a> 
     </div> 
    </div> 

{% endfor %} 

注:あなたは、私が思い付いた、それはあなたが投稿していないコードで動作させるために、このビットを微調整する必要がありますが、ここにあるかもしれ私はあなたの<div>id秒のいずれかを変更しましたclassをループ内に作成したため、idという複数の要素が作成され、HTMLでは機能しません。それらに注意してください。

+0

これを試してみましたが、 "TypeError: 'int'オブジェクトは反復可能ではありません"というように、 "range"を追加しました(つまり、範囲(row.men)%内の '%for male_boxes%なぜなら、 'row.men'がiterableとして表示されない理由はわかりません。 – impostorsyndrome

+0

気にしないで、動作しています。 !ありがとうございました! – impostorsyndrome

+0

私は助けてくれることができてうれしいです。この答えがあなたに役立つなら、私はあなたにこの質問のための受け入れられた答えとしてそれをマークすることを奨励したいと思います – coralvanda

関連する問題