Почему я не могу переключить видимость каждого элемента (в группе) в операторе for, переключается только последний элемент в группе? - PullRequest
0 голосов
/ 08 апреля 2010

Сценарий запускает Toggle штраф на каждый Control (Controls[i]) Click. Если первый элемент Control *1005* не Visible, он должен быть установлен Visible, а все другие элементы в Controls, которые не являются текущими Control (Controls[i]), должны быть установлены Hidden. Если Control первый элемент OL равен Visible, его следует установить Hidden.

.js

function Toggle(Control){

var Controls=document.getElementsByTagName("ol",document.getElementById("Quote_App"));
var Control=Control.getElementsByTagName("ol")[0];

if(Control.style.visibility!="visible"){

    for(var i=0;i<Controls.length;i++){

/* (function(){ */

        if(Controls[i]!=Control){

            Control.style.visibility="hidden";

        }else{

            Control.style.visibility="visible";

        };

/* })(); */

    };

}else{

    Control.style.visibility="hidden";

};

};

function Event(Mode,Function,Event,Element,Capture_or_Bubble){
if(Mode.toLowerCase()!="remove"){
    if(Element.addEventListener){
        if(!Capture_or_Bubble){
            Capture_or_Bubble=false;
        }else{
            if(Capture_or_Bubble.toLowerCase()!="true"){
                Capture_or_Bubble=false;
            }else{
                Capture_or_Bubble=true;
            };
        };
        Element.addEventListener(Event,Function,Capture_or_Bubble);
    }else{
        Element.attachEvent("on"+Event,Function);
    };
};
};

function Controls(){
var Controls=document.getElementById("Quote_App").getElementsByTagName("dd");
for(var i=0;i<Controls.length;i++){
    (function(){
        var Control=Controls[i];
        Event("add",function(){

            Toggle(Control);

        },"click",Control);
    })();
};
};

Event("add",Controls,"load",window);

Я уверен, что это что-то с оператором For, в источнике вы можете видеть, что я прокомментировал закрытие, которое я пробовал, но это тоже не сработало. Я все еще начинаю, поэтому не очень компетентен с замыканиями.

Ваша помощь приветствуется, заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 08 апреля 2010

Поскольку вы устанавливаете только видимость элемента управления, который вы инициализируете как элементы управления [0] и никогда не меняете?

0 голосов
/ 08 апреля 2010

Мне нужно было изменить строку 14 с Control.style.visibility="hidden"; на Controls[i].style.visibility="hidden";, и все это прекрасно работает!

Спасибо Колину Файн!

...