Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите подправить JavaScript функцию

14K
10 декабря 2007 года
makis
29 / / 16.01.2007
Доброго времени суток.
Наткнулся я тут на дну очень полезную вещь. А именно - на JavaScript ф-ию, которая скрывает HTML-элементы на страницы. Можете взглянуть на этом сайте. Я в JS мало что смыслю и поэтому не могу понять как привести её к нужному мне виду.
Дело в том, что скрываю я форму авторизации на сайте. Если юзер ткнёт на ссылке "Авторизация" (при этом выпадет формочка, которая раньше скрывалась, введёт неверные данные и страница перегрузится, то юзеру опять придётся тыкать на ссылку для разворачивания формочки авторизации. Не могу понять как можно сделать так, чтобы элемент страницы, который юзер уже единожды открыл не был закрыт при перезагруке страницы.
Вот код этой функции:
[HTML]
<script type="text/javascript">
<!--
/*
originally written by chris heilmann
modified by alexander shurkayev <alshur@narod.ru> | http://htmlcoder.visions.ru
*/

// настройки
var collapse_section_id = "quotes"; // ID раздела с элементами
var title_tag = "H3"; // имя тега для заголовков
var item_tag = "BLOCKQUOTE"; // имя тега для текста
var text_decotation = "underline"; // подчеркивание заголовков, если не нужно -- ставим "none"
var highlight_text = "« "; // загогулина перед заголовком при открытом тексте (нельзя использовать entities!)
var normal_text = "» "; // загогулина перед заголовком при скрытом тексте (нельзя использовать entities!)
// главная ф-ция
function toggle(e){
var el = window.event ? window.event.srcElement : e.currentTarget;
var collapse_item = el.nextSibling;
while (collapse_item.nodeType != 1) collapse_item = collapse_item.nextSibling; // workaround (whitespace)!
curr_shown = collapse_item.style.display == "block";
collapse_item.style.display = (curr_shown) ? "none" : "block";
var title_text = el.firstChild;
title_text.nodeValue = (curr_shown) ? title_text.nodeValue.replace(highlight_text, normal_text) : title_text.nodeValue.replace(normal_text, highlight_text);
}
// ф-ция инициализации
function init(){
if (document.getElementById && document.createTextNode){
var collapse_section = document.getElementById(collapse_section_id);
var collapse_title = collapse_item = null;
for (var i = 0; ((collapse_title = collapse_section.getElementsByTagName(title_tag).item(i)) && (collapse_item = collapse_section.getElementsByTagName(item_tag).item(i))); i++){
collapse_title.style.textDecoration = text_decotation;
collapse_title.style.cursor = window.event ? "hand" : "pointer";
if (collapse_title.addEventListener) collapse_title.addEventListener("click", toggle, false);
else if (collapse_title.attachEvent) collapse_title.attachEvent("onclick", toggle);
collapse_title.firstChild.nodeValue = normal_text + collapse_title.firstChild.nodeValue;
collapse_item.style.display = "none";
}
}
}
// запускаем процесс по onload'у
var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
if (root){
if (root.addEventListener) root.addEventListener("load", init, false);
else if (root.attachEvent) root.attachEvent("onload", init);
}
//-->
</script>
[/HTML]
Спасибо за внимание.
1.8K
10 декабря 2007 года
Ghirik
260 / / 15.03.2007
Эту ситуацию могут разрулить только Куки.
Вот пример сохранения переменной в куках.

[HTML]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Language" content="en">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>link1</title>
</head>
<body onload="on()">
<p><a href="#">link1</a></p>
<p><a href="#">link2</a></p>
<p><a href="#">link3</a></p>
<p><a href="#">link4</a></p>
<p><a href="#">link5</a></p>
<script type="text/javascript">
<!--
function on(){
var a = document.getElementsByTagName("a");
for (i = 0; i<a.length; i++) {
var color;
readCook(i) == false ? color = "yellow" : color = "red";
a.onclick = click_link;
a.id = "a" + i;
a.style.backgroundColor = color;
a.style.color = "black";
a.style.fontSize = "100%";
}
}
function click_link(){
document.cookie = "tag=" + this.id;
on();
}
function readCook(i) {
return document.cookie.indexOf("tag=a" + i) == -1 ? false : true;
}
//-->
</script>
</body>
</html>[/HTML]

В данном примере используются куки без указания срока хранения, а значит, при завершении сессии браузера (закрытии), эта переменная будет уничтожена.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог