В JavaScript как бы показывать только один элемент за раз - PullRequest
0 голосов
/ 13 января 2012

Я создал этот простой код JavaScript, который позволяет пользователю нажимать на элементы, а затем показывать пользователю, что скрыто.

Однако сейчас мой код позволяет пользователю нажимать на все элементы и открывать их.все в то же время.

Мне было интересно, кто-нибудь может подтолкнуть меня в правильном направлении?

Вот демо: http://jsfiddle.net/MTJa5/

var hellos = function(){
    var divClicks = document.getElementsByClassName("clickToShow");
    for(i=0; i < divClicks.length; i++){
        var click = divClicks[i];

        var close = function(){
            var open = false;

            click.addEventListener("click", function(e){
            e.preventDefault();
                if(open){
                    this.childNodes[3].setAttribute("class", "hidden");
                    open = false;
                } else {
                    this.childNodes[3].setAttribute("class", "show");
                    open = true;
                }
            },false);
        }();
    }
}();

Ответы [ 3 ]

1 голос
/ 13 января 2012

попробуйте это: http://jsfiddle.net/MTJa5/22/

0 голосов
/ 13 января 2012

привет, приятель, прошел через твою скрипочную работу и нашел решение ниже.

Это полный javascript в вашей скрипке с модификацией ::

var hellos = function(){
    var divClicks = document.getElementsByClassName("clickToShow");
    for(i=0; i < divClicks.length; i++){
        var click = divClicks[i];


        var close = function(){
            var open = false;
            click.addEventListener("click", function(e){
                var divVisible= document.getElementsByClassName("show");
        //alert(divVisible.length);
        for(j=0; j < divVisible.length; j++){
            divVisible[j].setAttribute("class", "hidden");
        }

            e.preventDefault();
                if (open){
               this.childNodes[3].setAttribute("class", "hidden");
                    open = false;
                }else{
                    this.childNodes[3].setAttribute("class", "show");
                    open = true;
                }

            },false);
        }();
    }
}();

Вот объяснение ::

на вашем событии клика я нашел все элементы div с class=show и в

for loop я снова установил class=hidden, а затем ваш код обрабатывает вещи, отображая соответствующий div при нажатии

0 голосов
/ 13 января 2012

Когда вы показываете один элемент, вам нужно пройти через остальные элементы и скрыть их элементы.

РЕДАКТИРОВАТЬ: увидеть эту скрипку: http://jsfiddle.net/spb_/MTJa5/25/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...