###目的
子リストの数をカウントしたいです。
###問題のコード
コードが長くてすみません。まずはサンプルです。
https://jsfiddle.net/psn5849w/136/
上のサンプルは下記コードですが、問題はjQueryの
var my_child_count = (parents.indexOf(my_post_num)).length;//カウントされない?
という部分でカウントされないことです。
これは配列parents
からmy_post_num
と一致する数をlength
でカウントしているつもりですが、なぜかundifindになってしまいます。
改めまして目的ですが、このカウントを使って最後の行の
$(this).find('.count-box').text(my_child_count);
で.count-box
のテキストをカウント数に書き換えることです。
なぜカウントされないのか、ご教示頂ければと思いご質問させて頂きました。
html
1<div class="alllists"> 2 <ul> 3 4 <li> 5 <div id="post-7" class="list" parent="0" ancestor="">A 6 <span class="my_post_num"></span><span class="my_ancestor_num"></span> 7 </div> 8 </li> 9 10 <li> 11 <div id="post-157" class="list" parent="0" ancestor="">B 12 <span class="my_post_num"></span><span class="my_ancestor_num"></span> 13 </div> 14 <ul class="childrens"> 15 <li> 16 <div id="post-200" class="list" parent="157" ancestor="">C(Bの子) 17 <span class="my_post_num"></span><span class="my_ancestor_num"></span> 18 </div> 19 </li> 20 <li> 21 <div id="post-354" class="list" parent="157" ancestor="">D(Bの子) 22 <span class="my_post_num"></span><span class="my_ancestor_num"></span> 23 </div> 24 </li> 25 <li> 26 <div id="post-365" class="list" parent="354" ancestor="">E(Dの子) 27 <span class="my_post_num"></span><span class="my_ancestor_num"></span> 28 </div> 29 </li> 30 </ul> 31 </li> 32 33 </ul> 34</div>
jQuery
1//先祖番号の連結 2function getParentNums(list) { 3 var parent_num = list.attr('parent'); 4 if (parent_num == "0") { 5 return ["0"]; 6 } 7 var parent = $("#post-" + parent_num); 8 var parent_nums = getParentNums(parent); 9 parent_nums.push(parent_num); 10 return parent_nums; 11} 12$('.list').each(function() { 13 var my_post_num = $(this).attr('id').split('-')[1]; 14 var list = $(this); 15 var parents = getParentNums(list); 16 var my_ancestor_num = parents.join('-'); 17 list.attr('ancestor',my_ancestor_num); 18 //確認のための表示 19 $(this).find('.my_post_num').text(my_post_num); 20 $(this).find('.my_ancestor_num').text(my_ancestor_num); 21}); 22 23//子がいたら「ボタン」表示し、「子の数」を書き換える 24var parents = []; 25$(".list").each(function() { 26 var parent_num = $(this).attr('parent'); 27 parents.push( parent_num ); 28}); 29$(".list").each(function() { 30 $(this).after('<p>子の数:<span class="count-box">0</span></p>'); 31 var my_post_num = $(this).attr('id').split('-')[1]; 32 var my_child_count = (parents.indexOf(my_post_num)).length;//カウントされない? 33 if (parents.indexOf(my_post_num) >= 0){ 34 $(this).append('<button>ボタン</button>'); 35 $(this).find('.count-box').text(my_child_count); 36 } 37}); 38 39 40 41 42 43 44 45 46 47
夜分に長いコードを提示して大変恐縮ではございますが、どうぞ宜しくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/03 23:31 編集
2018/09/04 01:56 編集
2018/09/04 01:18
2018/09/05 13:48