|
|
|
| есть таблица
---------------------
| Название | Мера |
---------------------
| Молоко | пакет |
| Молоко | бутылка |
| Квас | бутылка |
|
1. можно по select скрыть несколько строк? т.е. выбираю Молоко и остается две строке с молоком, выбираю Квас, остается только одна строка
2. Можно ли сделать фильтр по двум select? выбираю Молоко + бутылка - остается одна строка
есть код, соответственно он сейчас не работает
<?
<SCRIPT LANGUAGE="JavaScript">
<!--
function Display_input(which) {
if (which=="moloko") { moloko1.style.display="block"; kv.style.display="none";}
if (which=="kv") {kv.style.display="block"; moloko1.style.display="none";}
}
//-->
</script>
<select onChange="Display_input(this.options[this.selectedIndex].value)">
<option value="0"></option>
<option value="moloko">Молоко</option>
<option value="kv">Квас</option>
</select>
<table border=1>
<tr id="moloko1" style="display:block">
<td>Молоко
<td>пакет
</tr>
<tr id="moloko2" style="display:block">
<td>Молоко
<td>бутылка
</tr>
<tr id="kv" style="display:block">
<td>Квас
<td>бутылка
</tr>
</table>
|
| |
|
|
|
|
|
|
|
для: P@Sol
(29.08.2012 в 10:57)
| | >1. можно по select скрыть несколько строк? т.е. выбираю Молоко и остается две строке с молоком, выбираю Квас, остается только одна строка
>
читаю http://softtime.ru/forum/read.php?id_forum=4&id_theme=86589 | |
|
|
|
|
|
|
|
для: P@Sol
(29.08.2012 в 11:09)
| | Замечание:
kv.style.display="block"; moloko1.style.display="none";
В данном контексте, kv и moloko1 это просто строки, а не объекты.
В данном случае нужно обращаться к объекту
document.getElementById(which).style.display="";
Именно так: display="", а не display="none" и скрывайте строки. | |
|
|
|
|
|
|
|
для: P@Sol
(29.08.2012 в 11:09)
| | вот такая функция получилась:
<?
function Display_input(which) {
var t = document.getElementById("tabl");
for (var i = 0; i <t.rows.length; i++) {
if ( t.rows[i].cells[0].innerHTML != which.replace(/^\s+|\s+$|\r\n/g,""))
t.rows[i].style.display="none";
else t.rows[i].style.display="block";
}
}
|
вопрос 2 пока открыт. | |
|
|
|
|
|
|
|
для: P@Sol
(29.08.2012 в 12:23)
| | итоговая функция, которая учитывает два select
<?
function Display_input(which, which2) {
var t = document.getElementById("tabl");
for (var i = 0; i <t.rows.length; i++) {
var s1 = 0;
var s2 = 0;
if (which == 0) s1 = 0;
else if (t.rows[i].cells[0].innerHTML != which.replace(/^\s+|\s+$|\r\n/g,"")) s1=1;
if (which2 == 0) s2 = 0;
else if ( t.rows[i].cells[1].innerHTML != which2.replace(/^\s+|\s+$|\r\n/g,"")) s2=1;
if ( s1 == 0 && s2 == 0) t.rows[i].style.display="";
else t.rows[i].style.display="none";
}
}
...
<select id="filter1">
<option value="0"></option>
<option value="Молоко">Молоко</option>
<option value="Квас">Квас</option>
</select>
<select id="filter2">
<option value="0"></option>
<option value="пакет">пакет</option>
<option value="бутылка">бутылка</option>
</select>
<input onclick="Display_input(filter1.value,filter2.value)" type="button" value="Фильтровать" />
<input onclick="Display_input(0,0);" type="button" value="Сбросить" /></
|
правда не уверен, что это самый короткий способ | |
|
|
|
|
|
|
|
для: P@Sol
(29.08.2012 в 13:56)
| | немножко оптимизировал:
<?
if (which != 0 && t.rows[i].cells[0].innerHTML != which.replace(/^\s+|\s+$|\r\n/g,"")) s1=1;
if (which2 != 0 && t.rows[i].cells[1].innerHTML != which2.replace(/^\s+|\s+$|\r\n/g,"")) s2=1;
|
| |
|
|
|
|
|
|
|
для: P@Sol
(29.08.2012 в 10:57)
| | Список с единственным выбором, всегда возвращает значение выбранной опции, то есть писать:
onChange="Display_input(this.options[this.selectedIndex].value)
нет смысла, достаточно:
onChange="Display_input(this.value)
Чтобы скрывать несколько, нужно разрешить в списке выбор нескольких опций:
<select multiple ....>
и по событию onChange в цикле проверять выбранные опции. | |
|
|
|
|
|
|
|
для: confirm
(29.08.2012 в 11:12)
| | >>>Чтобы скрывать несколько, нужно разрешить в списке выбор нескольких опций:
<select multiple ....>
В данном конкретном случае - совсем не обязательно.
Выбрал "Молоко" - строка с ним скрылась. Действие завершено.
Выбрал "Квас" - и эта строка скрылась. Независимо от первого действия. | |
|
|
|
|
|
|
|
для: ЯСА
(29.08.2012 в 11:54)
| | Можно, конечно, если "скрыть несколько" рассматривать как последовательность нескольких действий, но автору хочется видимо не это. | |
|
|
|