Работа со строками таблицы
В таблице есть строки которые имеют одинаковые id.
К примеру оплачен счет или не оплачен. <tr id="active" class="client"></tr> <tr id="active" class="client"></tr> <tr id="active" class="client"></tr> <tr id="not_active" class="client"></tr> <tr id="not_active" class="client"></tr> <tr id="canc" class="client"></tr> <tr id="canc" class="client"></tr> <select name="items" onchange="showhideBlocks(value)"> <option value="0"> All <option value="1">Activ <option value="2"> non active </select>
function showhideBlocks(val){
if(val==0){
document.getElementById('active').style.display='table-row';
document.getElementById('not_active').style.display='table-row';
document.getElementById('canc').style.display='table-row';
}
else{
document.getElementById('active').style.display='none';
document.getElementById('not_active').style.display='none';
document.getElementById('canc').style.display='none';
document.getElementById('i'+val).style.display='table-row';
}
}
Нужно скрывать все строки определенного id, но почемуто работает не так как нужно. |
id - уникальный идентификатор.
Почитайте хоть что-нибудь. |
с getElementById понятно, спасибо, каким образом можно заменить данный пример на getElementsByName?
|
В место ID используйте классы. Для работы либо найдите кроссбраузерную функцию getElementsByClass, либо сами бегайте по строчками и проверяйте класс:
if (elem.className == 'blablabla') { //...
|
function findClass('clientareatableactive clientareatableterminated', node) {
if(document.getElementsByClassName) return (node || document).getElementsByClassName(str);
else {
var node = node || document, list = node.getElementsByTagName('*'), length = list.length, Class = str.split(/\s+/), classes = Class.length, array = [], i, j, key;
for(i = 0; i < length; i++) {
key = true;
for(j = 0; j < classes; j++) if(list[i].className.search('\\b' + Class[j] + '\\b') == -1) key = false;
if(key) array.push(list[i]);
}
return array;
}
}
Как мне использовать эту функцию в моем случае, без использования select, заменим его обыкновенными ссылками. |
Сделал вот так ----
function non_active() {
var n = document.getElementById('sort').getElementsByClassName('clientareatableactive')
for (var i=0; i<n.length; i++)
n[i].style.display = "none";
}
function active() {
var a = document.getElementById('sort').getElementsByClassName('clientareatableterminated')
for (var i=0; i<a.length; i++)
a[i].style.display = "none";
}
только теперь когда уже выбраны non_active() при нажатии (выборе) active() просто скрывает все и не показывает то что нужно. как указать чтоб всегда выберало со всей таблице, а не только в видимых tr? |
Разобрался, появилась новая задача:
Скрыть ВСЮ строку если в ней присутствует какой либо тег с определенным классом:
<tr>
<td>
<span class="textred"></span>
</td>
</tr>
<tr>
<td>
<span class="textgreen"></span>
</td>
</tr>
function pay() {
var p = document.getElementsByClassName('textred')
for (var i=0; i<p.length; i++)
p[i].style.display = "table-row";
var s = document.getElementsByClassName('textgreen')
for (var i=0; i<s.length; i++)
s[i].style.display = "none";
}
function npay() {
var p = document.getElementsByClassName('textgreen')
for (var i=0; i<p.length; i++)
p[i].style.display = "table-row";
var s = document.getElementsByClassName('textred')
for (var i=0; i<s.length; i++)
s[i].style.display = "none";
}
Где подправить можно? |
| Часовой пояс GMT +3, время: 05:29. |