Jump to content
  • 0

Кое что нужно дополнить... для полного счастья :)


Аксель
 Share

Question

Товарищи, у меня есть скрипт скрытия некой части кода:

<style type="text/css">
.treeview { padding: 0; clear: both; font-family: Arial, sans-serif; width: 100%; }
.treeview * { font-size: 100.1%; }
.treeview ul
{
overflow: hidden; width: 100%; margin: 0; padding: 0 0 1.5em 0;
list-style-type: none;
}
.treeview ul ul { overflow: visible; width: auto; margin: 0 0 0 0; padding: 0 0 0 0.75em; }
/* класс для ul после которых нет li в родительских ветках */
.treeview ul.l { border-left: 1px solid; margin-left: -1px; }
.treeview li.cl ul { display: none; }
.treeview li { margin: 0; padding: 0; }
.treeview li li { margin: 0 0 0 0.5em; border-left: 1px dotted; padding: 0; }
.treeview li div { position: relative; height: 1.5em; min-height: 16px; //height: 1.3em; }
.treeview li li div { border-bottom: 1px dotted; }
.treeview li p
{
position: absolute; z-index: 1; top: 0.8em; //top: 0.65em; left: 1.75em;
width: 100%; margin: 0; border-bottom: 1px dashed; padding: 0;
}
.treeview a { padding: 0.1em 0.2em; white-space: nowrap; //height: 1px; }
.treeview img.i
{
border-right: 2px solid; border-bottom: 0.5em solid;
margin-bottom: -0.5em; vertical-align: middle;
}
.treeview a.sc
{
position: absolute; top: 0.06em;
margin-left: -1em; padding: 0; text-decoration: none;
}

/* colors */
.treeview li p,
.treeview img.i,
.treeview .sc
{ background: #f5f5ea; }
.treeview ul.l,
.treeview li p,
.treeview img.i
{ border-color: #f5f5ea; }
.treeview ul li li,
.treeview ul li li div
{ border-color: #999999; }
.treeview a,
.treeview a.sc,
.treeview a.sc:hover
{ color: #000000; }
.treeview a:hover
{ color: #cc0000; }
</style>
<script type="text/javascript">
function UnHide( eThis ){
if( eThis.innerHTML.charCodeAt(0) == 9658 ){
eThis.innerHTML = '▼'
eThis.parentNode.parentNode.parentNode.className = '';
}else{
eThis.innerHTML = '►'
eThis.parentNode.parentNode.parentNode.className = 'cl';
}
return false;
}
</script>
<div class="treeview">
<ul>
<li>
<div><p><a href="#" class="sc" onclick="return UnHide(this)">▼</a>
<a href="#">Показать/скрыть Информ-таблицу</a></p></div>
<ul>
<li class="cl">
<div>
Содержимое, что скрывается
</div>
</li>
</ul>
</li>
</ul>
</div>

Проблема: я вообще то использовал скрипт "дерева с ветками", но потом подумал, что неплохо бы использовать его и для сокрытия некоторых вещей - удобно таки :) Так вот, проблема: как научить его "фиксировать" скрытия и показания - т.к. если, например, содержимое скрыто, то после обновления страницы оно сново показывается. А нужно, чтобы выбор фиксировался - даже после обновления оставался скрытым, и показать мона было бы только нажав на ссылку скрытия/показа. Ну, вы поняли, о чем. Я в жава чайник, но пытаюсь учится, если сможете, подскажите, с объяснениями... :)

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Я знаю что такое куки. Мне немножко непонятен смысл алгоритма "куку что именно скрыто, при заходе на страницу проверяем"

зы

Если вы не поняли того, что вам попытались сказать - это не повод зашиваться в себе и удалять топик.

Я не зашиваюсь, я просто полностью сознаю, что не стоит мешать людям такой занятности, как вы, своими нелепыми вопросами :)

Link to comment
Share on other sites

  • 0

Для записи/чтения кук можно это использовать:

function writeCookie(name, value, days){

if(days){

(time = new Date()).setTime(new Date().getTime()+days*24*60*60*1000);

var exp = '; expires='+time.toGMTString();

}else{

var exp='';

}

document.cookie=name+"="+value+exp+"; path=/";

}

function readCookie(name){

var cookies = document.cookie.split(';');

for(var i=0; i

var cookie=cookies.replace(/^s+/, '');

if (cookie.indexOf(name+'=')==0) return cookie.substring(name.length+1);

}

return null;

}

function eraseCookie(name){

writeCookie(name, "", -1);

}

Три эти функции выполняют запись, чтение и стирание cookie на текущей странице. Их можно протестировать с помощью следующего кода:

function addToCounter(){

var counter = readCookie('myCounter');

if(counter){

counter = parseInt(counter);

} else {

counter = 0;

}

writeCookie('myCounter', counter+1, 1);

}

function showCounter(){

alert(readCookie('myCounter'));

}

Если увеличить счетчик cookie несколько раз, обновить страницу, а затем проверить счетчик, то можно увидеть, что он остался таким же, как был до обновления страницы. Эти cookie будут сохранятся до тех пор, пока они не будут удалены из браузера или пока не пройдет 24 часа - cookie заданы на период одни сутки.

Link to comment
Share on other sites

  • 0

Тааак, возрождаю старую тему, чтобы еще не плодить. Смотрите, у меня есть код сворачивания категорий на неком сайте:

<script type="text/javascript">
function findCat()
{
var ni=1
for (ni=1; ni<=3; ni++)
{var idx="pun-category"+ni
var im="image"+ni
if (!document.getElementById(idx))
{break}
if (document.cookie.indexOf("category")!=-1)
{var cook1=document.cookie.substr(document.cookie.indexOf("category"))
var cook=cook1.substr((cook1.indexOf(ni)+String(ni).length), 2)
if (cook=="op")
{document.getElementById(idx).getElementsByTagName("table")[0].style.display="block"
var pic="ftp://194.85.113.34/Axel/pic/close.jpg"
var tit="Скрыть"
}
else if (cook=="cl")
{document.getElementById(idx).getElementsByTagName("table")[0].style.display="none"
var pic="ftp://194.85.113.34/Axel/pic/open.jpg"
var tit="Показать"
}}
else if (document.cookie.indexOf("category")==-1)
{document.getElementById(idx).getElementsByTagName("table")[0].style.display="block"
var pic="ftp://194.85.113.34/Axel/pic/close.jpg"
var tit="Скрыть"
}
document.getElementById(idx).getElementsByTagName("h2")[0].innerHTML="<div class="catleft"><!-- --></div>"+"<img src='"+pic+"' "+"id='"+im+"' "+"style='cursor: hand;'"+"title='"+tit+"' "+"onclick='changeCat("+ni+")'"+" align='right' /><span>"+document.getElementById(idx).getElementsByTagName("span")[0].innerHTML+"</span><div class="catright"><!-- --></div>"}
}
if (document.title.indexOf(" - Форум")!=-1)
{findCat()
window.onunload=saveCooks}

function changeCat(ru)
{var tb="pun-category"+ru
var img="image"+ru
if (document.getElementById(tb).getElementsByTagName("table")[0].style.display!="none")
{document.getElementById(tb).getElementsByTagName("table")[0].style.display="none"
document.getElementById(img).src="ftp://194.85.113.34/Axel/pic/open.jpg"
document.getElementById(img).title="Показать"}
else
{document.getElementById(tb).getElementsByTagName("table")[0].style.display="block"
document.getElementById(img).src="ftp://194.85.113.34/Axel/pic/close.jpg"
document.getElementById(img).title="Скрыть"}
}
function saveCooks()
{
var sample="category="
var vi=1
for (vi=1; vi<=3; vi++)
{var ct="pun-category"+vi
if (!document.getElementById(ct))
{break}
if (document.getElementById(ct).getElementsByTagName("table")[0].style.display!="none")
{sample+=vi+"op"}
else if (document.getElementById(ct).getElementsByTagName("table")[0].style.display=="none")
{sample+=vi+"cl"}}
var day=new Date()
day.setDate(day.getDate()+365)
sample+=";expires="+day.toGMTString()
document.cookie=sample}
</script>

Проблема в том, что этот скрипт должен запоминать (юзая все те же куки :), свернута категория была или нет. Однако это не работает... Подскажите, где ошибка, и что добавить, чтобы работало? Только ткнув носом или показав, куда вставлять кусок кода, а то я в жава вообще дрова. Кстате, вот скрипт сворачивания некой части кода страницы, только там запоминание позиций действует:

<script type="text/javascript">
document.getElementById('pun-announcement').getElementsByTagName("div")[0].id="annbody"
function lookCook()
{
if (document.cookie.indexOf("announce")!=-1)
{var an1=document.cookie.substr(document.cookie.indexOf("announce"))
var an=an1.substr(an1.indexOf("id")+2, 2)
if (an=="op")
{document.getElementById('annbody').style.display="block"
var knopka="Скрыть объявление"}
else if (an=="cl")
{document.getElementById('annbody').style.display="none"
var knopka="Показать объявление"}}
else if (document.cookie.indexOf("announce")==-1)
{document.getElementById('annbody').style.display="block"
var knopka="Скрыть объявление"}
document.getElementById('pun-announcement').getElementsByTagName("h2")[0].innerHTML+="<div align='right'>"+"<input type='button'"+" id='hider'"+" value='"+knopka+"' "+"onclick='hideAnn(); wCook()' /></div>"}

lookCook()


function hideAnn()
{
if (document.getElementById('annbody').style.display!="none")
{document.getElementById('annbody').style.display="none"
document.getElementById('hider').value="Показать объявление"}
else
{document.getElementById('annbody').style.display="block"
document.getElementById('hider').value="Скрыть объявление"}
}


function wCook()
{
var ann="announce=id"
if (document.getElementById('annbody').style.display!="none")
{ann+="op"}
else
{ann+="cl"}
var d=new Date()
d.setDate(d.getDate()+1)
ann+=";expires="+d.toGMTString()
document.cookie=ann}
</script>

Они очень похожи, и я, в свойственной себе манере, пытался разобраться (не читая никаких учебников по жава), проведя аналоги между кодами, но не хватило серого вещества :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy