Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Закрытие и открытие дива по клику (https://javascript.ru/forum/misc/25996-zakrytie-i-otkrytie-diva-po-kliku.html)

OLDBOY 22.02.2012 02:36

Закрытие и открытие дива по клику
 
Добрый вечер! Есть скрипт:
var text = 0;

function _click(id)
{
if (text != id)
{
//close text
if (text != 0)
{
    if (document.getElementById('item'+text)) 
        document.getElementById('item'+text).style.display = 'none';
    }
}
//open current
if (document.getElementById('item'+id)) 
    document.getElementById('item'+id).style.display = 'block';
    }

text = id;
}
else
{
//close text
if (document.getElementById('item'+text)) 
    document.getElementById('item'+text).style.display = 'none';
    }

text = 0;
}
}


и ссылки:
<a onclick="_click(1); return false;" href="#">1</a>
<a onclick="_click(2); return false;" href="#">2</a>
<a onclick="_click(3); return false;" href="#">3</a>

и дивы:
<div style=" display:none" id="item1">
<div style=" display:none" id="item2">
<div style=" display:none" id="item3">

Это все работает(при клике по ссылке пив открывается,нажимаем на 2ю ссылку,первый див скрывается а 2й открывается)
Но не получается сделать так чтоб 1й див сразу был открыт,и при нажатии 1й закрывается а 2й открывается,щас если сделать сразу первый див блоком то тогда по 2й и 3й сылке не открываются дивы пока 2а раза не кликнеш по 1й ссылке чтоб 1й див закрылся((

Никак не могу понять как это сделать((

ПС: поиском не нашол похожей проблеммы

рони 22.02.2012 08:18

открыть закрыть открывашка на js
 
OLDBOY,
Вариант ...
<!DOCTYPE html>
<html>
<head>
  <title></title>
<script type="text/javascript">
var _click = function () {
        var b = 1;
        return function (c) {
            var a = document.getElementById("item" + b);
            c == b && (a.style.display = "none" == a.style.display ? "" : "none");
            c != b && (a.style.display = "none", a = document.getElementById("item" + c), a.style.display = "", b = c)
        }
    }();
window.onload = function() {
    _click(1)
 }
</script>
</head>

<body>
<a onclick="_click(1); return false;" href="#">1</a>
<a onclick="_click(2); return false;" href="#">2</a>
<a onclick="_click(3); return false;" href="#">3</a>


<div style=" display:none" id="item1">div1</div>
<div style=" display:none" id="item2">div2</div>
<div style=" display:none" id="item3">div3</div>

</body>
</html>

yatony 15.01.2015 22:58

рони, подскажи как впилить анимацию при открытии?

рони 15.01.2015 23:24

yatony,
воспользоваться поиском по форуму и найти 100500 открывашек с анимацей

рони 15.01.2015 23:56

Открывашка на js + css3
 
<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8">
<style type="text/css">
div{
position: absolute;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
-webkit-transform: scale(0);
-moz-transform: scale(0);
-o-transform: scale(0);
-ms-transform: scale(0);
transform: scale(0);
width: 200px;
height: 100px;

}
div.max {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-o-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
 -webkit-transition-duration: 2s;
 -moz-transition-duration: 2s;
 -o-transition-duration: 2s;
 transition-duration: 2s;
}

div:nth-of-type(1) {
   background: #FF9933;
}
div:nth-of-type(2)
{
   background: #6666FF;
}
div:nth-of-type(3)
{
   background: #CC33CC;
}
</style>
<script type="text/javascript">
var _click = function () {
        var b = 1;
        return function (c) {
            var a = document.getElementById("item" + b);
            c == b && (a.className = "" == a.className ? "max" : "");
            c != b && (a.className = "", a = document.getElementById("item" + c), a.className = "max", b = c)
        }
    }();
window.onload = function() {
    _click(1)
 }
</script>
</head>

<body>
<a onclick="_click(1); return false;" href="#">1</a>
<a onclick="_click(2); return false;" href="#">2</a>
<a onclick="_click(3); return false;" href="#">3</a>


<div  id="item1">div1</div>
<div  id="item2">div2</div>
<div  id="item3">div3</div>

</body>
</html>

yatony 16.01.2015 01:59

рони, не получается, такого понятия как открывашки на форуме нет. Мне бы простое открытие сверху вниз.

рони 16.01.2015 10:14

Цитата:

Сообщение от yatony
Мне бы простое открытие сверху вниз.

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8">
<style type="text/css">
div[id^="item"]{
  -webkit-transition:height .6s;
  -moz-transition:height .6s;
  -o-transition:height .6s;
  transition:height .6s;
  width:200px;
  height:0px;
  overflow:hidden;
}

div.max{
  height:100px;
  -webkit-transition-delay:.6s;
  -moz-transition-delay:.6s;
  -o-transition-delay:.6s;
  transition-delay:.6s;
  -webkit-transition-duration:1s;
  -moz-transition-duration:1s;
  -o-transition-duration:1s;
  transition-duration:1s;
}

#item1{
  background:#F93;
}

#item2{
  background:#66F;
}

#item3{
  background:#C3C;
}
</style>
<script type="text/javascript">
var _click = function () {
        var b = 1;
        return function (c) {
            var a = document.getElementById("item" + b);
            c == b && (a.className = "" == a.className ? "max" : "");
            c != b && (a.className = "", a = document.getElementById("item" + c), a.className = "max", b = c)
        }
    }();
window.onload = function() {
    _click(1)
 }
</script>
</head>

<body>
<div>обычный див</div>
<a onclick="_click(1); return false;" href="#">1</a>
<a onclick="_click(2); return false;" href="#">2</a>
<a onclick="_click(3); return false;" href="#">3</a>
<div  id="item1">div1</div>
<div  id="item2">div2</div>
<div  id="item3">div3</div>
<div>обычный див</div>
</body>
</html>

рони 16.01.2015 11:27

Открывашка slideToggle открыть закрыть ссылки Открыть блок закрыть другие
 
:cray:
http://javascript.ru/forum/dom-windo...tml#post315695
http://javascript.ru/forum/jquery/45...tml#post298574
http://javascript.ru/forum/jquery/47...tml#post314573
http://javascript.ru/forum/jquery/52...tml#post344389
http://javascript.ru/forum/jquery/41...tml#post273733
http://javascript.ru/forum/jquery/46...tml#post307525
http://javascript.ru/forum/jquery/40...tml#post266547
http://javascript.ru/forum/misc/2599...tml#post159088
http://javascript.ru/forum/jquery/43...tml#post289153
http://javascript.ru/forum/dom-windo...tml#post309027
http://javascript.ru/forum/css-html/...tml#post241292
http://javascript.ru/forum/jquery/12...html#post76294
http://javascript.ru/forum/dom-windo...tml#post105545
http://jqueryui.com/tabs/#collapsible
http://javascript.ru/forum/dom-windo...tml#post307758
http://javascript.ru/forum/showthrea...168#post289165
http://javascript.ru/forum/jquery/38...tml#post253268

yatony 16.01.2015 11:49

рони, спасибо, но есть ещё одна маленькая проблемка, так как для div установлен css, то все другие дивы, которые не относятся к спойлеру на странице исчезают.

рони 16.01.2015 12:06

yatony,
а придумать селектор :cray: смотрите 7 пост снова


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