Фильтрация строк таблицы по первой букве
Есть 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:20. |