|
|
|
| Кто может помочь?
Нужно что бы при переходе по страницам сохранялись параметры display
То есть если на прошлой странице был изменен display = 'block' на display = 'none';
То страница переходила именно в том же состоянии.
<script type="text/javascript" language="javascript">
function menu(a)
{
if(document.getElementById('menu'+a).style.display == 'none')
document.getElementById('menu'+a).style.display = 'block';
else
document.getElementById('menu'+a).style.display = 'none';
}
</script>
<ul>
<li>Ссылка</li>
<li><a href='#' onclick="menu(1);return false;"> Ссылка </a></li>
<ul id="menu1" style="display:none">
<li>подСсылка</li>
<li>подСсылка</li>
<li>подСсылка </li>
</ul>
<li><a href='#' onclick="menu(2);return false;"> Ссылка </a></li>
<ul id="menu2" style="display:none">
<li>подСсылка</li>
<li>подСсылка</li>
<li>подСсылка </li>
</ul>
</ul>
|
Заранее огромное спасибо, очень надо. | |
|
|
|
|
|
|
|
для: Doorgen
(05.01.2009 в 16:08)
| | В сессии храни, а потом средствами PHP подставляй. | |
|
|
|
|
|
|
|
для: Doorgen
(05.01.2009 в 16:08)
| |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body>
<script type="text/javascript" language="javascript">
function menu(id){
if(document.getElementById("menu" + id).style.display == "none"){
value = 0;
document.getElementById("menu" + id).style.display = "block";
}else{
value = 1;
document.getElementById("menu" + id).style.display = "none";
}
setCookie("menu" + id, value, 365, "/", ".test15.ru");
}
function setCookie(name, value, days, path, domain, secure){
var expires, date;
if(typeof days == "number"){
date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = date.toGMTString();
}
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
document.cookie = curCookie;
}
function readCookie(name){
var cookieValue = '';
var search = name + '=';
if(document.cookie.length > 0){
offset = document.cookie.indexOf(search);
if(offset != -1){
offset += search.length;
end = document.cookie.indexOf(';', offset);
if(end == -1) end = document.cookie.length;
cookieValue = unescape(document.cookie.substring(offset, end))
}
}
return cookieValue;
}
function doDisplayRead(id){
if(readCookie('menu' + id) == 0){
document.getElementById("menu" + id).style.display = "block";
}else{
document.getElementById("menu" + id).style.display = "none";
}
}
</script>
<ul>
<li>Ссылка</li>
<li><a href="#" onclick="menu(1);return false;">Ссылка</a>
<ul id="menu1" style="display:none">
<li>подСсылка</li>
<li>подСсылка</li>
<li>подСсылка</li>
</ul>
<script type="text/javascript" language="javascript">doDisplayRead(1)</script>
</li>
<li><a href='#' onclick="menu(2);return false;">Ссылка</a>
<ul id="menu2" style="display:none">
<li>подСсылка</li>
<li>подСсылка</li>
<li>подСсылка</li>
</ul>
<script type="text/javascript" language="javascript">doDisplayRead(2)</script>
</li>
</ul>
</body>
</html>
|
Не самый лучший вариант, но вполне работоспособный.
Ещё могу посоветовать глянуть в вот этом _http://destroydrop.com/javascripts/tree/ направлении.
К сожалению вижу что примера уже нет, но вот можно скачать _http://destroydrop.com/javascripts/tree/dtree.zip , собственно там и скрипт и пример в одном флаконе.
Что касается вашего случая, сейчас попробую поуниверсальнее написать, если честно я сам учусь))) | |
|
|
|
|
|
|
|
для: Doorgen
(05.01.2009 в 16:08)
| | Как и обещал, более "правильный" вариант.
id указываем только одно. Любая вложенность. Ссылку на что либо можно сделать только если у LI нет "детей", в остальных случаях ссылка открывает закрывает вложеный, или как там правильно сказать.
Прошу обратить на то как вложены списки. В самом начале вы делали это неправильно. Валидатор матерится.
ЗЫ. Тем кто будет смотреть. Прошу попинать, никогда не делал ничего подобного, слишком мало опыта.
ЗЫ. ЗЫ. Функции setCookie и readCookie использовал готовые. Ну может слегка под себя доработал. Уже не помню, давно их юзаю.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body>
<script type="text/javascript" language="javascript">
var url = 'test15.ru';
function setCookie(name, value, days, path, domain, secure){
var expires, date;
if(typeof days == 'number'){
date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = date.toGMTString();
}
var curCookie = name + '=' + escape(value) +
((expires) ? '; expires=' + expires : '') +
((path) ? '; path=' + path : '') +
((domain) ? '; domain=' + domain : '') +
((secure) ? '; secure' : '');
if((name + '=' + escape(value)).length <= 4000){
document.cookie = curCookie;
}else{
if(confirm('Cookie превышает 4KB и будет вырезан !')){
document.cookie = curCookie;
}
}
}
function readCookie(name){
var cookieValue = '';
var search = name + '=';
if(document.cookie.length > 0){
offset = document.cookie.indexOf(search);
if(offset != -1){
offset += search.length;
end = document.cookie.indexOf(';', offset);
if(end == -1) end = document.cookie.length;
cookieValue = unescape(document.cookie.substring(offset, end))
}
}
return cookieValue;
}
function setMenuCookie(id){
var obj_ul = document.getElementById(id).getElementsByTagName('ul');
var value_ul_arr = new Array();
for(var i = 0, len = obj_ul.length; i < len; i++){
if(obj_ul[i].style.display == 'none') value_ul_arr[i] = 0; else value_ul_arr[i] = 1;
}
cookieValue = value_ul_arr.join('-');
setCookie('menu_' + id, cookieValue, 365, '/', '.' + url);
}
function setMenu(id){
var obj_a = document.getElementById(id).getElementsByTagName('a');
for(var i=0, len = obj_a.length; i < len; i++){
obj_a[i].onclick = function(){
var obj_li = this.parentNode.childNodes;
for(var j=0, len_ = obj_li.length; j < len_; j++){
if(obj_li[j].nodeName == 'UL'){
if(obj_li[j].style.display == 'none') obj_li[j].style.display = 'block'; else obj_li[j].style.display = 'none';
setMenuCookie(id);
return false;
}
}
}
}
}
function readMenu(id){
var obj_ul = document.getElementById(id).getElementsByTagName('ul');
var cookieValue = readCookie('menu_' + id);
var value_ul_arr = new Array();
value_ul_arr = cookieValue.split('-');
for(var i=0, len = obj_ul.length; i < len; i++){
if(value_ul_arr[i] == 0) obj_ul[i].style.display = 'none'; else obj_ul[i].style.display = 'block';
}
}
</script>
<ul id="menu" onmouseover="setMenu('menu'); return false;">
<li><a href="#">ссылка</a></li>
<li><a href="#">ссылка</a>
<ul>
<li><a href="#">ссылка</a>
<ul>
<li><a href="#">ссылка</a></li>
<li><a href="#">ссылка</a></li>
</ul>
</li>
<li><a href="#">ссылка</a></li>
</ul>
</li>
<li><a href="#">ссылка</a>
<ul>
<li><a href="#">ссылка</a></li>
<li><a href="#">ссылка</a></li>
</ul>
</li>
</ul>
<script type="text/javascript" language="javascript">readMenu('menu');</script>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: mikha
(09.01.2009 в 11:14)
| | А почему они сразу открыты? можно закрыть? | |
|
|
|
|
|
|
|
для: Doorgen
(09.01.2009 в 21:42)
| | попробуйте вот так
function readMenu(id){
var obj_ul = document.getElementById(id).getElementsByTagName('ul');
var cookieValue = readCookie('menu_' + id);
var value_ul_arr = new Array();
value_ul_arr = cookieValue.split('-');
for(var i=0, len = obj_ul.length; i < len; i++){
if(value_ul_arr[i]){
if(value_ul_arr[i] == 0) obj_ul[i].style.display = 'none'; else obj_ul[i].style.display = 'block';
}else{
obj_ul[i].style.display = 'none';
}
}
}
|
| |
|
|
|
|
|
|
|
для: mikha
(09.01.2009 в 22:21)
| | Спасибо все работает.
Только вот 1но не как не могу сделать, что бы ссылки которые открывали были именно ссылками по которым человек мок переходить, то есть он нажимает и переносится по этой ссылки а там такой же список и уже там открылась эта запись...
<ul id="menu" onmouseover="setMenu('menu'); return false;">
<li><a href="x.html">ссылка</a></li>
<li><a href="x.html">ссылка</a>
<ul>
<li><a href="x.html">ссылка</a>
<ul>
<li><a href="x.html">ссылка</a></li>
<li><a href="x.html">ссылка</a></li>
</ul>
</li>
<li><a href="x.html">ссылка</a></li>
</ul>
</li>
<li><a href="x.html">ссылка</a>
<ul>
<li><a href="x.html">ссылка</a></li>
<li><a href="x.html">ссылка</a></li>
</ul>
</li>
</ul>
|
Это возможно? | |
|
|
|
|
|
|
|
для: Doorgen
(11.01.2009 в 17:11)
| | Вы смотрели _http://destroydrop.com/javascripts/tree/dtree.zip ?
Может это именно то что вам нужно? Будут непонятки, спрашивайте.
А по этой теме, я сделал то что нужно было мне, а заодно и вам, пока это соответствовало тому что вы просите. Дальше мне не нужно. Впрочем переделать несложно, если будет настроение, переделаю. | |
|
|
|
|
|
|
|
для: mikha
(11.01.2009 в 17:27)
| | _http://destroydrop.com/javascripts/tree/dtree.zip посмотрел... там список выдаеться через скрипт а мне надо через <ul>
Пожалуйста помогите со списокм, мне эот список вполне устраивает тока вот ссылки бы работали. | |
|
|
|
|
|
|
|
для: Doorgen
(11.01.2009 в 22:46)
| | Я посмотрел, примеры выше не работаю.
Попробовал еще раз, обновляю страницу все стразу закрываеться в куки не чего не оставляет... Куки включен | |
|
|
|
|
|
|
|
для: Doorgen
(13.01.2009 в 20:11)
| | Убрал return false; теперь он переносит на другую страницу. А как сделать что бы в куки сохранял ?
<script type="text/javascript" language="javascript">
function menu(a)
{
if(document.getElementById('menu'+a).style.display == 'none')
document.getElementById('menu'+a).style.display = 'block';
else
document.getElementById('menu'+a).style.display = 'none';
}
</script>
<ul>
<li>Ссылка</li>
<li><a href='#' onclick="menu(1);"> Ссылка </a></li>
<ul id="menu1" style="display:none">
<li>подСсылка</li>
<li>подСсылка</li>
<li>подСсылка </li>
</ul>
</ul>
|
| |
|
|
|
|
|
|
|
для: Doorgen
(13.01.2009 в 21:05)
| | Если мне не изменяет память, это моя писанина, та что на самом верху? Мы в ответе за тех, кого приручили )))
<script language=JavaScript>
var d = document;
function getCookie(name) {
var a = name+"=";
var cookieStartIndex = d.cookie.indexOf(a);
if (cookieStartIndex == -1) return null;
var cookieEndIndex = d.cookie.indexOf(";", cookieStartIndex + a.length);
if (cookieEndIndex == -1) cookieEndIndex = d.cookie.length;
return unescape(d.cookie.substring(cookieStartIndex + a.length, cookieEndIndex));
}
function start() {
for(i=1; i < 3; i++)
{
a = getCookie('menu'+i);
d.getElementById('menu'+i).style.display = a;
}
}
function menu(m) {
var a = d.getElementById('menu'+m).style.display;
var b = d.getElementById('menu'+m).style.display = ( a == 'none')?'block':'none';
d.cookie = 'menu'+m+'='+b;
}
</script>
</head>
<body onload="start()">
<ul>
<li>Ссылка</li>
<li><a href='#' onclick="menu(1);return false;"> Ссылка </a></li>
<ul id="menu1" style="display:none">
<li><a href='2.html' > подСсылка</a></li>
<li><a href='2.html'> подСсылка</a></li>
<li><a href='2.html'> подСсылка</a> </li>
</ul>
<li><a href='#' onclick="menu(2);return false;"> Ссылка </a></li>
<ul id="menu2" style="display:none">
<li><a href='1.html'> подСсылка</a></li>
<li><a href='1.html' > подСсылка</a></li>
<li><a href='1.html'> подСсылка</a> </li>
</ul>
</ul>
</body>
|
| |
|
|
|
|
|
|
|
для: Николай2357
(13.01.2009 в 22:22)
| | Это и вправду ваша писанина... Я ее в каком то посту нашел.
Огромное спасибо. Вы мне очень помогли. | |
|
|
|
|
|
|
|
для: Doorgen
(14.01.2009 в 08:02)
| | Уважаемый Николай, огромное вам спасибо. Все подошло, внедрил удачно.
Но есть 1 но, куки когда-нибудь пропадают? А то после перезагрузки браузера они все еще на месте... | |
|
|
|
|
|
|
|
для: Doorgen
(14.01.2009 в 21:32)
| | :) попробуйте указать время жизни куков | |
|
|
|
|
|
|
|
для: Zezst
(15.01.2009 в 01:20)
| | Ну и какое тут время жизни?
<script language=JavaScript>
var d = document;
function getCookie(name) {
var a = name+"=";
var cookieStartIndex = d.cookie.indexOf(a);
if (cookieStartIndex == -1) return null;
var cookieEndIndex = d.cookie.indexOf(";", cookieStartIndex + a.length);
if (cookieEndIndex == -1) cookieEndIndex = d.cookie.length;
return unescape(d.cookie.substring(cookieStartIndex + a.length, cookieEndIndex));
}
function start() {
for(i=1; i < 3; i++)
{
a = getCookie('menu'+i);
d.getElementById('menu'+i).style.display = a;
}
}
function menu(m) {
var a = d.getElementById('menu'+m).style.display;
var b = d.getElementById('menu'+m).style.display = ( a == 'none')?'block':'none';
d.cookie = 'menu'+m+'='+b;
}
</script>
</head>
<body onload="start()">
<ul>
<li>Ссылка</li>
<li><a href='#' onclick="menu(1);return false;"> Ссылка </a></li>
<ul id="menu1" style="display:none">
<li><a href='2.html' > подСсылка</a></li>
<li><a href='2.html'> подСсылка</a></li>
<li><a href='2.html'> подСсылка</a> </li>
</ul>
<li><a href='#' onclick="menu(2);return false;"> Ссылка </a></li>
<ul id="menu2" style="display:none">
<li><a href='1.html'> подСсылка</a></li>
<li><a href='1.html' > подСсылка</a></li>
<li><a href='1.html'> подСсылка</a> </li>
</ul>
</ul>
</body>
|
| |
|
|
|
|
|
|
|
для: Doorgen
(15.01.2009 в 17:54)
| | Вообще время жизни специально не задано. Они должны пропадать после выключения браузера. Каим браузером Вы пользуетесь? Может это какие нибудь его особенности... | |
|
|
|
|
|
|
|
для: Николай2357
(15.01.2009 в 18:05)
| | Мазилой 3.05 | |
|
|
|
|
|
|
|
для: Doorgen
(15.01.2009 в 22:25)
| | Дело, как говорится, было не в бобине.... Мозила просто сбрасывает стили. Сделайте так:
function start() {
for(i=1; i < 3; i++)
{
a = getCookie('menu'+i);
if(a)
d.getElementById('menu'+i).style.display = a;
}
}
|
| |
|
|
|
|
|
|
|
для: Николай2357
(16.01.2009 в 07:13)
| | Ну и наверное последний вопрос для совершенства. А как сделать что бы в IE можно было сделать список например в 30 строк, я когда 3ечку меняю на 30 он в опере, мазиле, ие6 работает отлично но вот беда, в 7откаываеться после 3-5 (точно не помню). | |
|
|
|