A więc tak:
1. Sporo czasu zajęło mi rozszyfrowanie twoich komentarzy (tabela=tablica).
2. style.display="block" nie działa w FireFoxie zamieniłem na: style.display="".
3. Analizujac inne skrypty wymyśliłem funkcje do zamiany stringa na tablicę i na odwrót, ale nie wiem czy działają.
4. Próbowałem wszystko poskładać w całość i zatrzymałem sie w jednym miejscu. Jak narazie wszystko działa, ale
nie dla pierwszego panelu:
<script type="text/javascript"> <!--
var showCount=3;
var showStatus=new Array(showCount);
//wywolywana przy wejsciu na strone
function loadStatus(){
showStatus = string2array(getCookie('panel'));
}
//wywolywana przy opuszczaniu strony
function saveStatus(){
setCookie('panel', array2string(showStatus));
}
function array2string(arr) {
var str;
for(i = 0; i<showCount; i++) {
str = str + showStatus[i] + ":";
}
return str;
}
function string2array(str){
return arr = str.split(":");
}
function setCookie(name, value) {
//If name is the empty string, it places a ; at the beginning
//of document.cookie, causing clearCookies() to malfunction.
if(name != '')
document.cookie = name + '=' + value;
}
function getCookie(name) {
//Without this, it will return the first value
//in document.cookie when name is the empty string.
if(name == '')
return('');
name_index = document.cookie.indexOf(name + '=');
if(name_index == -1)
return('');
cookie_value = document.cookie.substr(name_index + name.length + 1,
document.cookie.length);
//All cookie name-value pairs end with a semi-colon, except the last one.
end_of_cookie = cookie_value.indexOf(';');
if(end_of_cookie != -1)
cookie_value = cookie_value.substr(0, end_of_cookie);
//Restores all the blank spaces.
space = cookie_value.indexOf('+');
while(space != -1) {
cookie_value = cookie_value.substr(0, space) + ' ' +
cookie_value.substr(space + 1, cookie_value.length);
space = cookie_value.indexOf('+');
}
return(cookie_value);
}
//Status paneli zostaje zapisany w tabeli
//table2array
function panelsStatus2Table() {
if(!document.getElementById)return;
for(var i=0; i<showCount; i++)
if(document.getElementById("show"+(i+1)).style.display=="none")
showStatus[i]=0;
else
showStatus[i]=1;
}
//Status paneli zostaje ustawiony wg danych w tabeli
//array2table
function table2PanelsStatus() {
if(!document.getElementById)return;
for(var i=0; i<showCount; i++)
if(showStatus[i]==0)document.getElementById("show"+(i+1)).style.display="none";
else document.getElementById("show"+(i+1)).style.display="";
}
//Pokaz/schowaj zawartosc
//show-hide
function showHidden(id) {
if(!document.getElementById)return;
element=document.getElementById(id);
if(element.style.display=="none")
element.style.display="";
else
element.style.display="none";
}
//-->
<body onload="loadStatus(); table2PanelsStatus()" onunload=" panelsStatus2Table(); saveStatus();">
<table width="210" cellspacing="0" cellpadding="0" border="0">
<tr><td class="panel_nav" onclick="showHidden('show1');">» Nagłówek
</td></tr> <tr id="show1"><td class="panel_con">
<tr><td class="panel_nav" onclick="showHidden('show2');">» Nagłówek
</td></tr> <tr id="show2"><td class="panel_con"> Zawartość
<tr><td class="panel_nav" onclick="showHidden('show3');">» Nagłówek
</td></tr> <tr id="show3"><td class="panel_con">
Nie mogę dojść czemu.
EDIT:Kiedy w linię:
if(showStatus[i]==0)document.getElementById("show"+(i+1)).style.display="none";
zamienię na:
if(showStatus[i]==0)document.getElementById("show"+(i)).style.display="none";
to użycie panelu 2 ustawia stan panelu 1, a panelu 3 - panelu 2, ale wtedy panel 1 "działa"