Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: golden-den от 05 Декабря 2005, 16:25:59

Название: убрать определнные строчки таблицы
Отправлено: golden-den от 05 Декабря 2005, 16:25:59
Есть таблица











aaaaaaa
bbbbbbbbb
ccccccccccc





как сделать так, чтобы по нажатию на какой-нибудь ссылке скрывалась - вторая и третья строчка

Дело в том, что если  сделать  так:

.....


а затем скрипт делает style.display="none";

то все работает, а вот если
...

то не работает

пробовал getElementById - не получается
Название: убрать определнные строчки таблицы
Отправлено: CGVictor от 05 Декабря 2005, 17:00:44
golden-den
???
Название: убрать определнные строчки таблицы
Отправлено: golden-den от 05 Декабря 2005, 17:21:15
так работает.
А если надо сразу несколько ячеек скрыть?
(вариант с прописыванием нескольких id в функции не пойдет)

Есть древовидный список:
1.
   1.1.
      1.1.1.
   1.2.
      1.2.1.
      1.2.2.
      1.2.3.
      1.2.4.
      1.2.5.
2.
   2.1.
   2.2.


Возле каждой цифры стоит ссылка которая должна скрывать дочерние узлы. Причем вложенность может быть произвольной.
А список выводится из базы...
Вот и проблема в том, как показать каждому элементу, какие у него дочерние
Причем верстка делается как таблица и в кажой строчке свой отступ, поэтому вопрос - как скрыть несколько строк?
Название: убрать определнные строчки таблицы
Отправлено: CGVictor от 06 Декабря 2005, 16:57:49
golden-den
Вариант 1 - размечать div вокруг tr. Однако не кошерно (table div-ами рвется)
Вариант 2 - отдельную таблицу в div. Однако распухает код.
Вариант 3 - вообще без таблицы, но гемор с выравниванием.
Вариант 4 - делать getElementsByClassName и прописывать ID в класс, но это порнография.
Название: убрать определнные строчки таблицы
Отправлено: golden-den от 06 Декабря 2005, 17:04:37
CGVictor
вариант 1 - не работает
вариант 2 - работает но не до конца тогда догадался как сделать, чтобы много ячеек сразу скрывавлось
3 и 4 даже не пробовал

сегодня получилось вот так сделать:


function switch_menu (count)
{
var tbl_start = \'table[\'+count+\']\';
var tbl_start_el = document.getElementById(tbl_start);
var tbl_start_val=tbl_start_el.value;
var q=document.step1_form.elements.length;
var next = true;
var action_know = false;
var i = count +1;
while (next){
var tbl_cur = \'table[\'+i+\']\';
var tbl_cur_el = document.getElementById(tbl_cur);
var tbl_cur_val=tbl_cur_el.value;
if (tbl_cur_val.indexOf(tbl_start_val) >=0 ){
//alert("tbl_start="+tbl_start_val + "       tbl_cur="+tbl_cur_val + "        YES");
var tag = "tr"+i;
tag_el = document.getElementById(tag);
if (!action_know) {
if (tag_el.style.display == "inline" ||  tag_el.style.display == "") {action_do="none";}
else {action_do = "inline";};
action_know = true;
}
tag_el.style.display = action_do;
//alert (q + " > "+ (4*i+1));
if (q>(4*i+2)) { i++; }
else {next=false;};
} // if
else {next=false;};
}; // while

};




у каждой ячейки шв прописал
ввел скрытое поле со значением table

значение table как раз принимает:
1_1
1_1_1
1_1_2

то есть, если в подуровне значение содержит "родительское-текущее-верхнего уровня" значение, то скрываем,
и все это в цикл
Название: убрать определнные строчки таблицы
Отправлено: golden-den от 06 Декабря 2005, 17:06:41
только теперь проблема с firefox - не правильно реагирует на
style.display = "inline" - портится таблица, когда снова отображаешь страницу (есть тема на этом форуме такая"проблема с firefox")
Название: убрать определнные строчки таблицы
Отправлено: CGVictor от 06 Декабря 2005, 17:08:25
golden-den
Гм..

Второй вариант -



...


Неплохо работает четвертый. Но это не долго продлится.
Я пользуюсь вторым и третьим.
Название: убрать определнные строчки таблицы
Отправлено: CGVictor от 06 Декабря 2005, 17:09:26
golden-den
А почему не "block"?? Inline - вообще атрибут капризный...
Название: убрать определнные строчки таблицы
Отправлено: commander от 06 Декабря 2005, 17:13:39
golden-den
за кроспостинг можно и по рукам настучать!
Название: убрать определнные строчки таблицы
Отправлено: golden-den от 06 Декабря 2005, 18:58:54
b][CGVictor[/b]
пробовал и block и другие значения - просто перебором - ни один вариант не сработал


commander
Не хотел, просто при решении проблемы возникли 2, как я думал, разных вопроса, которые не пересекутся так явно...

в том посте про firefox, а здесь про id, деревья и тд
Название: убрать определнные строчки таблицы
Отправлено: golden-den от 07 Декабря 2005, 00:52:15
все решилось следующим образом
if (navigator.appName == "Netscape") {style.display = "table-row" }
 else {style.display = "block"}
Название: убрать определнные строчки таблицы
Отправлено: CGVictor от 08 Декабря 2005, 23:05:08
golden-den
А, ну, в принципе, так и должно быть
[off]просто я уже сто лет ничего не писал под NN[/off]

[off][moderatorial][/off]
commander
Может, тему в FAQ положить?...
Название: убрать определнные строчки таблицы
Отправлено: Макс от 09 Декабря 2005, 10:37:56
Цитировать
CGVictor:
[moderatorial] commander Может, тему в FAQ положить?...

Добавил в фак.
ИМХО можешь сам решать, надо добавлять тему или нет. Ты ведь тоже модератор.
Название: убрать определнные строчки таблицы
Отправлено: CGVictor от 09 Декабря 2005, 11:06:59
[off]Макс
Да неудобно как-то...прямо вот так самому..лучше спросить у собратьев по цеху...[/off]
Название: убрать определнные строчки таблицы
Отправлено: commander от 09 Декабря 2005, 12:56:55
CGVictor
я не против...