Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Скрытые от глаз DIV (https://javascript.ru/forum/dom-window/62271-skrytye-ot-glaz-div.html)

alexgrenn 02.04.2016 15:04

Скрытые от глаз DIV
 
Здравствуйте. Может кто нибуть помочь в решении такого вопроса. Нужно устроить так что бы было три ряда и в каждом ряду допустим по три кнопки и при нажатии на одну из кнопок должен открываться div если в этом же ряду нажать на другую кнопку открытый div должен закрыться и открыться другой соответствующий кнопке.

Два следующих ряда должны действовать так же и не зависеть друг от друга ну то есть если я в первом ряду кнопку нажал открывается div то во втором ряду при нажатии кнопки откроется новый div но в первом ряду не должен закрываться
Очень надеюсь на вашу помощь

рони 02.04.2016 15:21

alexgrenn,
http://javascript.ru/forum/project/3...tml#post383606

alexgrenn 02.04.2016 16:07

Вот что то близко но не то мне не меню нужно. Вот смотрите есть у меня картинка допустим «Кукла» и у куклы есть платья, туфли и шляпки разных вариантов. И мне нужно при нажатии на кнопку менять ей наряд. Т.е. к каждой кнопке привязана картинка и при нажатии одна картинка закрывалась и открывалась другая.

рони 02.04.2016 16:11

Цитата:

Сообщение от alexgrenn
Вот смотрите

где код?

alexgrenn 02.04.2016 16:17

Примерно как то так...

<script type="text/javascript">
<!--
function viewdiv(id){
var el=document.getElementById(id);
if(el.style.display=="block"){
el.style.display="none";
} else {
el.style.display="block";
}
}
//-->
</script>
<script type="text/javascript">
<!--
function viewdiv2(id){
var el=document.getElementById(id);
if(el.style.display=="block"){
el.style.display="none";
} else {
el.style.display="block";
}
}
//-->
</script>
<script type="text/javascript">
<!--
function viewdiv3(id){
var el=document.getElementById(id);
if(el.style.display=="block"){
el.style.display="none";
} else {
el.style.display="block";
}
}
//-->
</script>

<a href="javascript:void(0);" onclick="viewdiv('mydiv');">Кукла</a>
<div id="mydiv" style="display:none;"><img src="images/model/1.png"></div>

<a href="javascript:void(0);" onclick="viewdiv2('mydiv2');">Зеленое платье</a>
<div id="mydiv2" style="display:none;"><img style="margin-top: -727px;" src="images/model/4.png"></div>
<a href="javascript:void(0);" onclick="viewdiv3('mydiv3');">Красное платье</a>
<div id="mydiv3" style="display:none;"><img style="margin-top: -745px;" src="images/model/5.png"></div>

рони 02.04.2016 16:41

alexgrenn,
сама кукла то почему исчезает?

alexgrenn 02.04.2016 16:48

Ну здесь при нажатии она появляется и уже после остается когда происходит выбор платья. Просто получается так что при нажатии на кнопку div открывается и наслаевается на уже имеющийся а хотелось бы что бы открывался один и закрывался другой да еще чтобы было несколько рядов выбора инвентаря

рони 02.04.2016 17:29

игра одень куклу
 
alexgrenn, внимательно изучите код ... вам нужно только правильно расставить классы и дата-атрибут и добавить в css новый класс.
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
     div.dress, div.shoes  {
       display: none;
     }
     div.show  {
       display: block;
     }
  </style>

</head>

<body>


<a href="#" class="open" data-cls="dress">Зеленое платье</a>
<div class="dress" ><img>Зеленое платье</div>
<a href="#" class="open" data-cls="dress">Красное платье</a>
<div class="dress" ><img>Красное платье</div>

<a href="#" class="open" data-cls="shoes">Зеленые туфли</a>
<div class="shoes" ><img>Зеленые туфли</div>
<a href="#" class="open" data-cls="shoes">Красные туфли</a>
<div class="shoes" ><img>Красные туфли</div>

<script>
window.addEventListener("DOMContentLoaded", function() {
    var open = document.querySelectorAll(".open"),
        obj = {};
    [].forEach.call(open, function(a) {
        var cls = a.dataset.cls;
        obj[cls] !== undefined ? obj[cls]++ : obj[cls] = 0;
        var i = obj[cls];
        cls = document.querySelectorAll("div." + cls);
        a.addEventListener("click", function(event) {
            event.preventDefault();
            [].forEach.call(cls, function(div, k) {
                div.classList[k == i ? "toggle" : "remove"]("show")
            })
        })
    })
});
</script>


</body>

</html>

alexgrenn 07.04.2016 15:12

Громадное Вам спасибо. То что и было нужно.


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