Witam. Jestem bardzo początkujący. Pracuje nad stworzeniem na stronie prostego filtrowania zawartości tabeli. Na podstawie informacji i skryptów, które znalazłem w internecie stworzyłem taki projekt:
Projekt - 1
Niestety filtry działają tylko pojednyńczo tzn. wybranie kryteriów w filtrze nr dwa czyści wybrane pozycje w innych filtrach. Nie wiem jak sobie z tym poradzić. Nie wiem jak to dokładnie opisać ale jak sprawić aby filtry działały razem i wybierały tylko wspólne dla siebie nawzajem elementy?
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
  2. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
  3. <title>LISTA</title>
  4. <link rel="stylesheet" href="style.css" type="text/css" />
  5. <script type="text/javascript" src="filtr.js"></script>
  6. </head>
  7. <body>
  8. <table border="1" id="sortable">
  9. <tr id="tabh">
  10. <th width="127" onClick="SortTable(1)">Typ <p style="display: inline;" id="sort1"></p></th>
  11. <th width="86" onClick="SortTable(2)">Materiał <p style="display: inline;" id="sort2"></p></th>
  12. <th width="99" onClick="SortTable(3)">Wymiar (mm) <p style="display: inline;" id="sort3"></p></th>
  13. <th width="116" onClick="SortTable(4)">Grubość (mm) <p style="display: inline;" id="sort4"></p></th>
  14. </tr>
  15. <tr id="tabh_filtr">
  16. <th>
  17.  
  18. </th>
  19. <th>
  20. <div id="filtr_wymiar">
  21. <p class="newclass"><input type="checkbox" onChange="filtr_start1()" id="METAL" value="Metal"/> Metal</p>
  22. <p class="newclass"><input type="checkbox" onChange="filtr_start1()" id="PLASTIK" value="Plastik"/> Plastik</p>
  23. <p class="newclass"><input type="checkbox" onChange="filtr_start1()" id="SZKLO" value="Szkło"/> Szkło</p>
  24. </div>
  25. </th>
  26. <th align="left">
  27. <div id="filtr_wymiar">
  28. <p class="newclass"><input type="checkbox" onChange="filtr_start2()" id="WYMIAR8x8" value="8x8"/> 8x8</p>
  29. <p><input type="checkbox" onChange="filtr_start2()" id="WYMIAR10x10" value="10x10"> 10x10</p>
  30. <p><input type="checkbox" onChange="filtr_start2()" id="WYMIAR19x19" value="19x19"> 19x19</p>
  31. <p><input type="checkbox" onChange="filtr_start2()" id="WYMIAR25x25" value="25x25"> 25x25</p>
  32.  
  33. </div>
  34. </th>
  35. <th align="left">
  36. <div id="filtr_grubosc">
  37. <p class="newclass"><input type="checkbox" onChange="filtr_start3()" id="GRUBOSC_105" value="1,05"/> 1,05</p>
  38. <p><input type="checkbox" onChange="filtr_start3()" id="GRUBOSC_150" value="1,50"> 1,50</p>
  39. <p><input type="checkbox" onChange="filtr_start3()" id="GRUBOSC_190" value="1,90"> 1,90</p>
  40.  
  41. </div>
  42. </th>
  43. </thead>
  44. <tr id="">
  45. <td>G1</td>
  46. <td>Metal</td>
  47. <td>8x8</td>
  48. <td>1,05</td>
  49. </tr>
  50. <tr id="tabb1">
  51. <td>G2</td>
  52. <td>Plastik</td>
  53. <td>8x8</td>
  54. <td>1,50</td>
  55. </tr>
  56.  
  57. <tr id="tabb1">
  58. <td>G3</td>
  59. <td>Szkło</td>
  60. <td>10x10</td>
  61. <td>1,90</td>
  62. </tr>
  63. <tr id="tabb1">
  64. <td>G4</td>
  65. <td>Metal</td>
  66. <td>19x19</td>
  67. <td>1,05</td>
  68. </tr>
  69. <tr id="tabb1">
  70. <td>G5</td>
  71. <td>Szkło</td>
  72. <td>10x10</td>
  73. <td>1,50</td>
  74. </tr>
  75. <tr id="tabb1">
  76. <td>G6</td>
  77. <td>Szkło</td>
  78. <td>25x25</td>
  79. <td>1,50</td>
  80. </tr>
  81. <tr id="tabb1">
  82. <td>G7</td>
  83. <td>Plastik</td>
  84. <td>19x19</td>
  85. <td>1,90</td>
  86. </tr>
  87. <tr id="tabb1">
  88. <td>G8</td>
  89. <td>Metal</td>
  90. <td>25x25</td>
  91. <td>1,05</td>
  92. </tr>
  93. </tbody>
  94. </table>
  95. </body>
  96. </html>


Kod
function filtr_start1()
{
        var METAL = document.getElementById("METAL");
        var PLASTIK = document.getElementById("PLASTIK");
        var SZKLO = document.getElementById("SZKLO");



        table = document.getElementById("sortable").rows;
        var table_length = table.length;

        if(METAL.checked || PLASTIK.checked || SZKLO.checked)
        {
                for(var i = 2; i < table_length; i++)
                {
                        if((table[i].cells[1].innerHTML == METAL.value && METAL.checked) ||
                                (table[i].cells[1].innerHTML == PLASTIK.value && PLASTIK.checked) ||
                                (table[i].cells[1].innerHTML == SZKLO.value && SZKLO.checked) )
                        {
                                table[i].style.display = "";
                        }
                        else
                        {
                                table[i].style.display = "none";
                        }
                }
        }
        else
        {
                for(var i = 2; i < table_length; i++)
                {
                        table[i].style.display = "";
                }
        }
}






function filtr_start2()
{
        var WYMIAR8x8 = document.getElementById("WYMIAR8x8");
        var WYMIAR10x10 = document.getElementById("WYMIAR10x10");
        var WYMIAR19x19 = document.getElementById("WYMIAR19x19");
        var WYMIAR25x25 = document.getElementById("WYMIAR25x25");



        table = document.getElementById("sortable").rows;
        var table_length = table.length;

        if(WYMIAR8x8.checked || WYMIAR10x10.checked || WYMIAR19x19.checked || WYMIAR25x25.checked)
        {
                for(var i = 2; i < table_length; i++)
                {
                        if((table[i].cells[2].innerHTML == WYMIAR8x8.value && WYMIAR8x8.checked) ||
                                (table[i].cells[2].innerHTML == WYMIAR10x10.value && WYMIAR10x10.checked) ||
                                (table[i].cells[2].innerHTML == WYMIAR19x19.value && WYMIAR19x19.checked) ||
                                (table[i].cells[2].innerHTML == WYMIAR25x25.value && WYMIAR25x25.checked) )
                        {
                                table[i].style.display = "";
                        }
                        else
                        {
                                table[i].style.display = "none";
                        }
                }
        }
        else
        {
                for(var i = 2; i < table_length; i++)
                {
                        table[i].style.display = "";
                }
        }
}


function filtr_start3()
{
        var GRUBOSC_105 = document.getElementById("GRUBOSC_105");
        var GRUBOSC_150 = document.getElementById("GRUBOSC_150");
        var GRUBOSC_190 = document.getElementById("GRUBOSC_190");


        table = document.getElementById("sortable").rows;
        var table_length = table.length;

        if(GRUBOSC_105.checked || GRUBOSC_150.checked || GRUBOSC_190.checked)
        {
                for(var i = 2; i < table_length; i++)
                {
                        if((table[i].cells[3].innerHTML == GRUBOSC_105.value && GRUBOSC_105.checked) ||
                                (table[i].cells[3].innerHTML == GRUBOSC_150.value && GRUBOSC_150.checked) ||
                                (table[i].cells[3].innerHTML == GRUBOSC_190.value && GRUBOSC_190.checked) )
                        {
                                table[i].style.display = "";
                        }
                        else
                        {
                                table[i].style.display = "none";
                        }
                }
        }
        else
        {
                for(var i = 2; i < table_length; i++)
                {
                        table[i].style.display = "";
                }
        }
}