2017-07-06 4 views
0

HTMLとJavascriptで何か問題があります(これはまだ新しくなっています)。私はDjangoフレームワークを使用してテーブルケースにリストを表示します。データベースの各要素について、リストを表示し、この最初のリストにデータベース内の対応する要素の新しいリストを表示します。チェックボックスがチェックされているときにのみリストを表示する

私はJSFiddleを作った。

状況:

<tr> 
       <td>Foo</td> 
       <td>Fighters<td> 
       <td>Bar</td> 
       <td>Baz</td> 
       <td> 
        <ul>        
         {% for domain,terms in django_database %} 
           <li> 
           <input type="checkbox" class="listcheck"><label for="listcheck"> - {{ domain }}</label> 
           <!-- When checkbox is checked, the following list displays --> 
           <ul> 
            {% for object in database %} 
             <li>{{ object }}</li> 
            {% endfor %} 
           </ul> 
           </li> 
          {% endfor %} 
        </ul> 
       </td> 
</tr> 

これは臆面もなく、関連する質問から盗まれた、私が試したのJavascriptです。

for (var i = 0; i < checkboxes.length; i++) 
{ 
    var box = checkboxes[i]; 
    box.onclick = function() 
    { 
     var currentList = this.parentNode; 
     var secondColumn = currentRow.getElementsByTagName("ul")[1]; 

     alert("My text is: " + secondColumn.textContent); 
    }; 
} 

ここで、2つのHTMLリストを問題なく表示できます。うまくいきます。しかし、私は動作するチェックボックスを取得することはできません。うーん。

+0

https://jsfiddle.net/yd3wk61L/6/ここにJSFiddleコードを使用しています – hansTheFranz

+0

私は2つを追加する必要があります。ダニエルがコメントで言ったことはまず真実です。このような複数のチェックボックスがあると、間違ったJSまたはすべての "div"を一度に開くことができます。 'this.parent()。closest("。collapse2 ")'などを使って、どのdivを開くべきかを指定します。そして2番目の問題は、あなたが常に必要としない不必要なデータ(私はあなたのクエリがどれだけ大きいかわかりません)をロードしていることです。チェックボックスがクリックされたときにだけデータがロードされるように、Ajaxを使用することもできます。 – hansTheFranz

答えて

1

この JS Fiddleをご覧ください。 fadeToggleを持つシンプルなJSソリューションです。 Delay of 100はオプションですが、ホールのものをよりエレガントにします。

<input class="collapsed" type="checkbox">The Checkbox 
<div class="collapse2 collapse" style="display:none;"> 
    <li>hello there</li> 
    <li>hello there</li> 
    <li>hello there</li> 
</div> 

$(".collapsed").click(function(event){ 
    $(".collapse2").fadeToggle().delay(100); 
}) 

これは、コメントを残さないとトリックを行う必要があります。

+0

これはチェックボックスをクリックするとすべての詳細を表示します。 OPにはチェックボックスと詳細のセットをリンクして関連するものだけを展開する方法が必要です。 –

+0

@DanielRosemanキーワード 'this'または' this.parent()。closest( "。collapse2") 'を追加すると助けになりますか? – hansTheFranz

関連する問題