Показать определенную строку таблицы на основе флажка

Я хочу отобразить строку таблицы на основе выбора из нескольких вариантов, когда я извлекаю данные из базы данных, там будет 1000+ строк, среди которых мне нужно отобразить только конкретную строку. Я ноб в JavaScript и взял этот сниппет из Как показать строки таблицы на основе выбранного флажка

Я попытался изменить код в соответствии с требованиями, но не смог разобраться. Я сократил часть td, чтобы уменьшить длину кода, там будет 16 столбцов вокруг. Пожалуйста, помогите мне, если любой другой JS скрипт будет предоставлен, это было бы очень полезно.

           <div>Country</div>
            <div class="row" name="country_checkbox" id="id_row"  onclick="return filter_type(this);">
             <ul id="id_country">
            <li><label for="id_country_0"><input type="checkbox" name="country" value="NORTHAMERICA" placeholder="Select Country" id="id_country_0">
         NORTHAMERICA</label>
        
        </li>
            <li><label for="id_country_3"><input type="checkbox" name="country" value="LATAM" placeholder="Select Country" id="id_country_3">
         LATAM</label>
        </li>

        <li><label for="id_country_2"><input type="checkbox" name="country" value="ASIA" 
        placeholder="Select Country" id="id_country_2">ASIA</label>
        </li>
        
         </ul>
                    </div>
            <table class="datatable" id='table_id'> 
              <thead>
                <thead>
                  <tr>
                    <th>Region</th>
                    <th> Area </th>
                    <th> Country </th>
                 </tr>
                </thead>
     
              <tbody>
                <tr id="trow">
                 {% for i in database%}
                  <td>i.Region</td>
                  <td>i.Area </td>
                  <td>i.Country</td>
                 </tr>
              </tbody>



    <script>
    // checkbox selection
    
         function filter_type(box) {
        //alert("checked");
         var cbs = document.getElementsByTagName('input');
         var all_checked_types = [];
         for(var i=0; i < cbs.length; i++) {
             if(cbs[i].type == "checkbox") {
                     if(cbs[i].name.match(/^country/)) {
                             if(cbs[i].checked) {
                                 all_checked_types.push(cbs[i].value);
                              }
                          }
                   }
          }
    
         if (all_checked_types.length > 0) {
             $('.dataclass tr:not(:has(th))').each(function (i, row) {
                 var $tds = $(this).find('td'),
                 type = $tds.eq(2).text();
                 if (type && all_checked_types.indexOf(type) >= 0) {
                     $(this).show();
                  }else{
                     $(this).hide();
                  }
              });
          }else {
                $('.datatbl tr:not(:has(th))').each(function (i, row) {
                    var $tds = $(this).find('td'),
                    type = $tds.eq(2).text();
                    $(this).show();
                 });
        }
        return true;
     }  
    
    </script>

Ваш подход, возможно, нуждается в доработке. В W3 есть хороший пример фильтрации на основе входных данных, который может помочь вам встать на правильный путь.

Ниже я привел рабочий пример, используя код W3 в качестве отправной точки. Это должно дать вам представление о том, как реализовать желаемое решение.

В приведенном вами коде кажется, что вы, возможно, работаете с jQuery. Приведенное ниже решение является чистым JS и не требует никаких внешних библиотек. В дополнение к модификации функции фильтрации JS (filter_type), мы перенесли атрибут onclick из div, содержащего все флажки, и поместили его на каждый отдельный входной флажок.

Вернуться на верх