ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Ссылка на открытие блока

 

3910
Дмитрий @Q-Tec
Не знаю, наверное это можно реализвать на JS. Поискал решение в google, ненашёл (плохо искал?)
Нужно что бы при переходе по ссылке приблиительно такой - index.htm#id открывался блок, к примеру див с ид=id и так далее
(то есть если перейти по ссылке index.htm#id1 открывался блок с ид=id1 и скрывается с id и другими)

Поможет кто в поисках? Можно конечно и на ajax т.к. у меня сомнения по поводу того, что так можно сделать на JS

1555
Алексей @TheDark
Q-Tec пишет:

Не знаю, наверное это можно реализвать на JS. Поискал решение в google, ненашёл (плохо искал?)
Нужно что бы при переходе по ссылке приблиительно такой - index.htm#id открывался блок, к примеру див с ид=id и так далее
(то есть если перейти по ссылке index.htm#id1 открывался блок с ид=id1 и скрывается с id и другими)

Поможет кто в поисках? Можно конечно и на ajax т.к. у меня сомнения по поводу того, что так можно сделать на JS

Я может неправильно тебя понял.. Но все же...
Код выглядит так: <a name="#name">текст, рисунок, что-то еще</a>, где name - название области страницы.
Ссылка будет выглядить так index.html#name
Надеюсь понятно объяснил. Но может я и не так понял вопрос..

Отредактировано TheDark - 01.01.2011
3910
Дмитрий @Q-Tec
Нет, не так.. наглядный пример..

<a href="#" onclick="obj=document.getElementById('ID'); if(obj.style.display=='none') obj.style.display='block'; else obj.style.display='none'; return false;">Нажать для открытия блока</a>
<div id=ID style="display:none; name=ID">Здесь будет то, что откроется при переходе по ссылке или при нажатии на ссылку</div><br>

1555
Алексей @TheDark
Q-Tec пишет:

Нет, не так.. наглядный пример..

<a href="#" onclick="obj=document.getElementById('ID'); if(obj.style.display=='none') obj.style.display='block'; else obj.style.display='none'; return false;">Нажать для открытия блока</a>
<div id=ID style="display:none; name=ID">Здесь будет то, что откроется при переходе по ссылке или при нажатии на ссылку</div><br>


Ну попробуй это:

Это в head:

<script language="JavaScript" type="text/javascript">
function openinfo(id){
var smd = document.getElementById(id);
sml=document.getElementsByTagName("DIV");
for(i=0; i<sml.length;i++) if (sml[i].id.match(/info/)&&!sml[i].id.match(id) ) sml[i].style.display = "none" ;
smd.style.display == "block" ? smd.style.display = "none" : smd.style.display = "block";}
</script>

Это в нужное место страницы:

<a href="#" onClick="openinfo('info');" id="but1">Нажать для открытия блока!</a>
</font>
<div id="info" style="display:none;" >
Содержимое блока
</div>

Фиолетовым цветом обозначено название блока.

Отредактировано TheDark - 01.01.2011
3910
Дмитрий @Q-Tec
Спасибо, но при переходе по ссылке блок не открывается

8497
Степан @Trilby
В гугле нашел **********

хорошая штука:
window.location.hash;
Заключил в переменную и убрал решетку:
pagehash = window.location.hash;
pagehash = pagehash.substr(1);

Танцевал-танцевал с бубном..
<html>
<head>
<script language="JavaScript" type="text/javascript">

function openinfo(id){
var smd = document.getElementById(id);
sml=document.getElementsByTagName("DIV");
for(i=0; i<sml.length;i++) if (sml[i].id.match(/info/)&&!sml[i].id.match(id) ) sml[i].style.display = "none" ;
smd.style.display == "block" ? smd.style.display = "none" : smd.style.display = "block";}

function boltayka(){
pagehash = window.location.hash;
pagehash = pagehash.substr(1);
openinfo(pagehash);
}
</script>
</head>
<body onload="boltayka();">
<a href="#info" onClick="openinfo('info');" id="but1">Нажать для открытия блока!</a>
</font>
<div id="info" style="display:none;" >
Здесь был Болтайка. Гыыы
</div>
</body>
</html>

Надеюсь, кто-нибудь ещё додумает это, чтобы без body onload запускать?

Отредактировано Trilby - 02.01.2011
2970
удалён @Foggy
ребят, всё уже сделано до вас (**********, **********).
Но, если честно, мне сейчас тоже нужно работать с табами и мне нужно, чтобы они были анимированными.
Может кто поможет? Я нашёл пока что **********, но мне нужно, чтобы внутренний контент блока оставался неизменным. Не двигался, иначе говоря. Лучший вариант - плавный переход (как у меня на Гурылёв.ру, но с возможностью ссылок на табы)

Отредактировано Foggy - 02.01.2011
8497
Степан @Trilby
Foggy пишет:

ребят, всё уже сделано до вас (**********, **********).

Хз. У меня весь код ни такой уж сложный + имея window.location.hash; можно как угодно эти блоки вертеть.

Но, если честно, мне сейчас тоже нужно работать с табами и мне нужно, чтобы они были анимированными.
Может кто поможет? Я нашёл пока что **********, но мне нужно, чтобы внутренний контент блока оставался неизменным. Не двигался, иначе говоря. Лучший вариант - плавный переход (как у меня на Гурылёв.ру, но с возможностью ссылок на табы)

Тоже самое, но копай функцию openinfo(id).
Jquery - вещь хорошая. Немного погуглив можно найти такую вещь, как Fade. Её уже сам изучай:
**********

2970
удалён @Foggy
Trilby, а там разве нельзя что угодно с блоками делать? не вижу особых затруднений. или я тебя не так понял?

А что до fade - он только скрывает или открывает. а надо сделать плавную смену одного на другое. у меня прикручен фреймворк ********** и используется функция slideToggle. хочется сделать ссылки, а в идеале урезать вес всего этого хлама. я в js всё-таки слабо понимаю. сам писать скрипты (да-да, до сих пор) не умею. тыркался я уже в это около недель двух-трёх назад, никак не мог сделать всё (табы-ссылки в адресной строке, мелкий вес сего дела и плавный переход) одновременно.

Отредактировано Foggy - 02.01.2011