Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отрыть DIV блок при переходе с другой страницы (https://javascript.ru/forum/misc/3007-otryt-div-blok-pri-perekhode-s-drugojj-stranicy.html)

BuTbka 08.03.2009 18:10

Отрыть DIV блок при переходе с другой страницы
 
Есть скрипт, который по клику открывает/закрывает div блок(использует jquery). Как сделать так, чтобы в ссылке на эту страницу можно было указывать какой div блок открыть. Заранее спасибо.
<html lang="ru">
<head><title>Open/close</title>
<meta content="text/html; charset=windows-1251" http-equiv="Content-Type">
</head>
<body>

<style type="text/css">
body {
        background-color: #FFFFFF;
        color: #2B4157;
        scrollbar-base-color: #AEC9E4;
        scrollbar-arrow-color:  #45688B;
        margin-top: 20px;
        margin-left: 20px;
        margin-bottom: 20px;
        margin-right: 20px;
}

.spoiler-wrap {
        width: 100%; margin: 6px auto; clear: both; background: #E9E9E6;
        border: solid #C3CBD1; border-width: 1px 1px 1px 2px;
}
.spoiler-head {
        font-size: 12px; padding: 1px 14px 3px; margin-left: 0px; line-height: 15px;
}
.spoiler-body {
        padding: 1px 6px 2px; display: none;
        border-top: 1px solid #C3CBD1; background: #F5F5F5;
}

.clickable { cursor: pointer; }

.folded, .folded2 { display: block;
        background: transparent url(img/icon_plu.gif) no-repeat left center; padding-left: 14px; }
.unfolded, .unfolded2 { display: block;
        background: transparent url(img/icon_min.gif) no-repeat left center; padding-left: 14px; }

</style>

<script language="JavaScript" type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
<!--
function initSpoilers(context)
{
var context = context || 'body';
$('div.spoiler-body').each( function() {
var code = $(this).find('textarea').text();
if(code) $(this).html(code);
});
$('div.spoiler-head', $(context)).click(function() {
var code = $(this).next('div.spoiler-body').find('textarea').text();
if(code) $(this).next('div.spoiler-body').html(code);
$(this).toggleClass('unfolded');
$(this).next('div.spoiler-body').slideToggle('fast');
});
}
$(document).ready(function(){
initSpoilers('body');
initForums('body');
});
//-->
</script>

<div class="spoiler-wrap">
 <div class="spoiler-head folded clickable">1</div>
 <div class="spoiler-body">Text<div class="clear"></div>
</div><!--/spoiler-body-->
</div><!--/spoiler-wrap-->

<div class="spoiler-wrap">
 <div class="spoiler-head folded clickable">2</div>
 <div class="spoiler-body">Text<div class="clear"></div>
</div><!--/spoiler-body-->
</div><!--/spoiler-wrap-->

</body></html>

Gvozd 08.03.2009 19:27

используйте свойство window.location
парсите строку на предмет нахождения нужной вам переменной, и на основании ее открываете необходимый блок

BuTbka 08.03.2009 20:35

Может кто-то сможет, если не сложно, пример написать на основе этого скрипта?

Gvozd 08.03.2009 21:07

function()
	{
	param=/param=([^&]*)/.exec(window.location)[1]
	alert(param)
	$("#"+param).open();//это для примера.на самом деле тут у вас должен быть ВАШ код по открытию того или иного спойлера
	}

передаете в адресной строке что-то по типу
index.php?param=qwe
и открываете спойлер с id=qwe

BuTbka 08.03.2009 21:21

Спасибо большое, будем разбираться

Gvozd 08.03.2009 21:31

забыл добавить, что в случае отстутсвия необходимой строки в адресной строке, скрипт вылетает с ошибкой.
по хорошему, разбейте первую строку скрипта на составляющие,и сделайте проверки.
вариант попробще, обернуть в try-catch
try
		{
		param=/param=([^&]*)/.exec(window.location)[1]
		alert(param)
		$("#"+param).open();
		}
	catch(e){}

BuTbka 08.04.2009 21:40

Кто поможет доделать скрипт как указано?
За пиво или скромную сумму в WM или Я деньгах.

Gvozd 08.04.2009 22:59

а в чем у вас проблема-то?
что именно не получилось, применив советы из темы?
PS какая она, скромная сумма по вашему мнению?
PPS если нужно наисвеорешее решение задачи, то стукните мне в асю(в профиле), обсудим, сделаю


Часовой пояс GMT +3, время: 01:55.