![]() |
Показаны 1 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- Java/Java Scripts (http://netadmin.ws/forum/forumdisplay.php?forumid=9)
-- Таблица с разворачивающимися столбцами/строками (http://netadmin.ws/forum/showthread.php?threadid=11214)
Таблица с разворачивающимися столбцами/строками
Итак, продолжаем тему
http://www.netadmin.ws/forum/showth...s=&postid=79432
сгенерили мы табличку. Теперь нужно сделать так, что бы столбцы и строки сворачивались и разворачивались в соответствеии с древовидной структурой.
Есть 2 стыренные функции:
function ChangeColumnVisibility(strVisibility, intColumnNumber) {
if(navigator.product == "Gecko" && navigator.productSub && navigator.productSub > "20041010" && (navigator.userAgent.indexOf("rv:1.8") != -1 || navigator.userAgent.indexOf("rv:1.9") != -1)) { // Mozilla 1.8alpha; see bug 76497 and bug 242368; must be higher than 1.7.x
var ColumnCollection = document.getElementById("limit_list").getElementsByTagName("col");
ColumnCollection[intColumnNumber].style.visibility = strVisibility;
} else if(document.all && !window.opera && document.compatMode && document.compatMode == "CSS1Compat") {
var ColumnCollection = document.getElementById("limit_list").getElementsByTagName("col");
if(strVisibility == "visible") {
ColumnCollection[intColumnNumber].style.display = "block";
} else if(strVisibility == "collapse") {
ColumnCollection[intColumnNumber].style.display = "none";
}
} else if(document.addEventListener) { // Mozilla and Opera 7.x
var TDCollection = document.getElementById("limit_list").getElementsByTagName("td");
for(var CellIterator = 0; CellIterator < document.getElementById("limit_list").rows.length; CellIterator ++) {
if(strVisibility == "visible") {
document.getElementById("limit_list").rows[CellIterator].cells[intColumnNumber].style.display = "table-cell";
} else if(strVisibility == "collapse") {
document.getElementById("limit_list").rows[CellIterator].cells[intColumnNumber].style.display = "none";
}
}
}
}
function ChangeRowVisibility(strVisibility, intRowIndex) {
if(navigator.product == "Gecko" && navigator.productSub && navigator.productSub > "20041010" && (navigator.userAgent.indexOf("rv:1.8") != -1 || navigator.userAgent.indexOf("rv:1.9") != -1)) {
/*
Mozilla 1.8alpha; see bug 77019 and bug 242368; must be higher than 1.7.x
Mozilla 1.8a2 supports accordingly dynamic collapsing of rows in both border-collapse models
but not 1.7.x versions */
document.getElementById("limit_list").rows[intRowIndex].style.visibility = strVisibility;
} else if(strVisibility == "visible") {
if(document.all && document.compatMode && document.compatMode == "CSS1Compat" && !window.opera) {
document.getElementById("limit_list").rows[intRowIndex].style.display = "block";
} else if(document.getElementById && document.getElementById("limit_list").rows) { // Mozilla prior to 1.8a2, Opera 7.x and MSIE 5+
document.getElementById("limit_list").rows[intRowIndex].style.display = "table-row";
document.getElementById("limit_list").rows[intRowIndex].style.visibility = strVisibility;
}
} else if(strVisibility == "collapse") {
document.getElementById("limit_list").rows[intRowIndex].style.display = "none";
if(document.getElementById("limit_list").rows[intRowIndex].style.visibility) document.getElementById("limit_list").rows[intRowIndex].style.visibility = strVisibility;
}
}
function rowz() {
if (req.readyState == 4) {
if (req.status == 200) {
response = req.responseXML.documentElement;
result = response.getElementsByTagName('result')[0].firstChild.data;
if(result != 0) {
level = response.getElementsByTagName('level')[0].firstChild.data;
cleft = response.getElementsByTagName('cleft')[0].firstChild.data;
cright = response.getElementsByTagName('cright')[0].firstChild.data;
parent_id = response.getElementsByTagName('parent')[0].firstChild.data;
if(parent_id != 0) {
loadXMLDoc('parent_row', 'http://stat/api.php?act=get_str_kks&id='+parent_id);
}
cur_string = document.getElementById('tr_'+level+'_'+cleft);
next_level = Number(level)+1;
if(cur_string.firstChild.childNodes[0].value == 'hide' && (document. getElementById('tr_'+next_level+'_'+(Number(cleft)
+1)).style.display == "none" || document. getElementById('tr_'+next_level+'_'+(Number(cleft)
+1)).style.visibility == "collapse")) {
for(c=Number(cleft); c<=Number(cright); c++) {
if (document.getElementById('tr_'+next_level+'_'+c)) { ChangeRowVisibility('visible', document.getElementById('tr_'+next_level+'_'+c).rowIndex); }
}
cur_string.firstChild.childNodes[0].value = 'show';
cur_string.firstChild.childNodes[1].src = '/images/minimise.gif';
} else if (cur_string.firstChild.childNodes[0].value == 'show' || ((document. getElementById('tr_'+next_level+'_'+(Number(cleft)
+1)).style.display == "table-row" || document. getElementById('tr_'+next_level+'_'+(Number(cleft)
+1)).style.display == "block") || document. getElementById('tr_'+next_level+'_'+(Number(cleft)
+1)).style.visibility == "visible")) {
for(x=Number(next_level); x<=Number(kks_max_level); x++) { for(c=Number(cleft); c<=Number(cright); c++) {
if (document.getElementById('tr_'+x+'_'+c)) { act_string = document.getElementById('tr_'+x+'_'+c); ChangeRowVisibility('collapse', act_string.rowIndex); if(act_string.firstChild.childNodes[0] && act_string.firstChild.childNodes[1]) { act_string.firstChild.childNodes[0].value = 'hide'; act_string.firstChild.childNodes[1].src = '/images/maximise.gif'; } }
}}
cur_string.firstChild.childNodes[0].value = 'hide';
cur_string.firstChild.childNodes[1].src = '/images/maximise.gif';
}
}
}}
}
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<response>
<method>get_str_kks</method>
<result>1</result>
<id>2</id>
<title>Головное отделение</title>
<root_id>1</root_id>
<cleft>2</cleft>
<cright>61</cright>
<parent>1</parent>
<norder>1</norder>
<level>2</level>
<name>не указано</name>
<info>не указано</info>
</response>

__________________
Админ - вождь Апачей...
| Формат времени GMT. Текущее время 15:11. | Показаны 1 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.