Фильтрация строк таблицы по первой букве
Есть html таблица. Хочу, что бы по нажатию кнопки отображались только те строки, слова в которых начинаются на букву "а". Пробовал сделать, но почему-то не выходит. В чем ошибка?
<table id="sf"> <tr> <td>Бочка</td> </tr> <tr> <td>Аквариум</td> </tr> <tr> <td>Астронавт</td> </tr> <tr> <td>Лопата</td> </tr> <tr> <td>Аргентина</td> </tr> </table> <input name="filt1" onclick="filtera('sf')" type="button" id="filt1" /> function filtera (_id1){ var table1 = document.getElementById(_id1); var ele1; for (var r = 1; r < table1.rows.length; r++) { ele1 = table1.rows[r].innerHTML.replace(/<[^>]+>/g,""); var displayStyle = 'none'; if (ele1.toLowerCase().charAt(0) == 'а') displayStyle = ''; else { displayStyle = 'none'; break; } table1.rows[r].style.display = displayStyle; } } |
IndigoHollow,
11 строка зачем? |
IndigoHollow,
<!DOCTYPE HTML> <html> <head><meta charset="utf-8"> <title>Untitled</title> </head> <body> <table id="sf"> <tr> <td>Бочка</td> </tr> <tr> <td>Аквариум</td> </tr> <tr> <td>Астронавт</td> </tr> <tr> <td>Лопата</td> </tr> <tr> <td>Аргентина</td> </tr> </table> <input name="filt1" onclick="filtera('sf')" type="button" id="filt1" /> <script> function filtera (_id1){ var table1 = document.getElementById(_id1); var ele1; for (var r = 1; r < table1.rows.length; r++) { ele1 = table1.rows[r].innerHTML.replace(/<[^>]+>|\s/g,""); var displayStyle = 'none'; if (ele1.toLowerCase().charAt(0) == 'а') displayStyle = ''; table1.rows[r].style.display = displayStyle; } } </script> </body> </html> |
Цитата:
Когда строку убрал, то таблица скрывает все строки. Даже те, которые удовлетворяют условию. Во, спасибо! Сейчас пойду пробовать :) |
А если, скажем, в таблице две колонки и надо отфильтровать по второй?
Вот я накидал код: <table id="sf" border="1"> <tr> <td>1</td> <td>Лопата</td> </tr> <tr> <td>2</td> <td>Кран</td> </tr> <tr> <td>3</td> <td>Качели</td> </tr> <tr> <td>4</td> <td>Прицеп</td> </tr> <tr> <td>5</td> <td>Солнце</td> </tr> </table> <input name="filt1" onclick="filtera('sf')" type="button" id="filt1" /> function filtera (_id1){ var table1 = document.getElementById(_id1); var ele1; for (var r = 0; r < table1.rows.length; r++) { for (var q = 0; q < table1.rows[r].cells.length; q++) { ele1 = table1.rows[r].cells[q].innerHTML.replace(/<[^>]+>|\s/g,""); var displayStyle = 'none'; if (ele1.toLowerCase().charAt(0) == 'к') displayStyle = ''; table1.rows[r].cells[q].style.display = displayStyle; } } } Только есть одно НО. Результат показывает только вторую колонку, а первую просто вырезает. Как исправить? Если бы я знал как вставлять рабочий код в пост, то вставил бы. А пока я не узнал, прикрепляю картинку ![]() |
Получилось
function filtera (_id1){ var table1 = document.getElementById(_id1); var ele1; for (var r = 0; r < table1.rows.length; r++) { for (var q = 0; q < table1.rows[r].cells.length; q++) { ele1 = table1.rows[r].cells[q].innerHTML.replace(/<[^>]+>|\s/g,""); var displayStyle = 'none'; if (ele1.toLowerCase().charAt(0) == 'к') displayStyle = ''; /*table1.rows[r].cells[q].style.display = displayStyle;*/ } table1.rows[r].style.display = displayStyle; } } Спасибо, рони! |
Цитата:
[HTML run][/HTML] Цитата:
пост 3 добавьте ячейку в строку 33 и всё |
IndigoHollow,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
<script> function filtera (_id1){ var table1 = document.getElementById(_id1); var ele1; for (var r = 1; r < table1.rows.length; r++) { ele1 = table1.rows[r].cells[1].innerHTML.replace(/<[^>]+>|\s/g,""); var displayStyle = 'none'; if (ele1.toLowerCase().charAt(0) == 'а') displayStyle = ''; table1.rows[r].style.display = displayStyle; } } </script> Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 22:04. |