Member 13153537 Ответов: 1

Как добавить классы для ul внутри li элементов с помощью javascript


я хочу создать динамическое меню с помощью таблицы базы данных.я хочу создать меню под подменю и подменю под другим подменю, например n уровней.
используя функцию php, я создаю html-элементы, подобные этому
мой стол вот такой . то, что я хочу, это если я нажму на родительский элемент, как показать только
дочерние элементы, как А1,А2,А3, если А1 ,А2 и А3 имеет подпункты: я затем нажмите кнопку А1 элемент шоу связанной с дочерними элементами, как, что.для этого прежде всего я хочу, чтобы добавить классы для родительского класса и имена детей занятия с использованием JavaScript.как это сделать .пожалуйста, помогите мне заранее спасибо.
       id    refid  name userdefined 
             1      0     A
             2      0     B
             3      0     C
             5      1     A1
             6      5     AA
             7      5     AB
             8      6     a1
             9      6     a2
             10     1     A2
             11     1     A3
             12     2     B1
             14     3     C1
             15     3     C2


<pre lang="text">
<ul> 
<li> A </li>
<ul>
<li> A1 </li>
<ul>
<li> AA </li>
<ul>
<li> a1 </li>
<li> a2 </li>
</ul>
<li> AB </li>
</ul>
<li> A2 </li>
<li> A3 </li>
</ul>
<li> B </li>
<ul>
<li> B1 </li>
<li> B2 </li>
</ul>
<li> C </li>
<ul>
<li> C1 </li>
<li> C2 </li>
</ul>
</ul>


Что я уже пробовал:

я создал эту рекурсивную функцию для создания элементов ul и li.но проблема здесь в том, что для родительского класса она дает класс limain fine, а для дочерних элементов-lichild для всех дочерних элементов sub, а также дает класс lichild.как это предотвратить.
function submenu($parentid=0){
  global $con;
    $sql=mysqli_query($con,"SELECT * FROM test WHERE refid=".$parentid);
    {
      $rowcount=mysqli_num_rows($sql);
      if($rowcount>0){
        echo '<ul>';
      }
            while($row=mysqli_fetch_array($sql,MYSQLI_ASSOC))
            {
              if(mysqli_num_rows($sql)>0)
              {
              $sql1=mysqli_query($con,"SELECT * FROM test WHERE refid=".$row['id']);
              if(mysqli_num_rows($sql1)>0 && $row['refid']==0)
              {
             
                echo '<li class="limain">'.$row['name'];
                 //echo '<li><a href="'.$row['userdefined'].'">'.$row['name'].'</a>';
                 submenu($row['id']);
                 echo '</li>';
            }
              else{
               echo '<li class="lichild"><a href="'.$row['userdefined'].'">'.$row['name'].'</a>';
               submenu($row['id']);
               echo '</li>';
            }
          }
      }
      if($rowcount>0){
        echo '</ul>';
        }
    }
  }

с помощью этой функции, если нажать на любой родительский элемент, он показывает все дочерние элементы вместе с суб дочерними элементами также.я хочу показать только первый уровень субэлементов только как это сделать, пожалуйста, помогите мне заранее спасибо.
<script src="jquery-3.2.1.js"></script>
  <script type="text/javascript">
 $(function(){

  $(".limain").click(function(){
      
  $(this).find('.lichild').toggle();

  });
});

1 Ответов

Рейтинг:
1

Richard MacCutchan

Вы уже разместили этот вопрос на сайте Как создать уль внутри элементов Li и Li-элементы внутри элементов, ул с помощью PHP и MySQL таблицы динамически[^], и получил некоторые предложения. Пожалуйста, не делайте репостов.