JavaScript » FAQ

Filtracja wierszy z tabeli

Jak wykonać filtrację wierszy tabelki, wybierając odpowiedni filtr z selectboksa? (tak jak na Allegro). Można na przykład taką oto prostą
funkcją:

function change_comm_type(table, e)
{
        r = document.getElementById(table).rows;
        for(i = 1; i < r.length; i++)
                r[i].style.display = e.value == 'all' ? '' :
                e.value == r[i].className ? '' : 'none';
}

Przykład:

<select onchange="change_comm_type('tabelka', this)">
        <option value="all">Wszystkie</option>
        <option value="pos">Pozytywne</option>
        <option value="neu">Neutralne</option>
        <option value="neg">Negatywne</option>
</select>
<table id="tabelka" border="1">
        <tr>
                <th>lp</th>
                <th>Tytuł</th>
                <th>Komentarz</th>
        </tr>
        <tr class="pos">
                <td>1</td>
                <td>foo</td>
                <td>Pozytywny</td>
        </tr>
        <tr class="neu">
                <td>2</td>
                <td>bar</td>
                <td>Neutralny</td>
        </tr>
        <tr class="neg">
                <td>3</td>
                <td>baz</td>
                <td>Negatywny</td>
        </tr>
        <tr class="pos">
                <td>4</td>
                <td>xxx</td>
                <td>Pozytywny</td>
        </tr>
</table>

Efekt działania można zobaczyć tutaj.