birgit: mit getElementbyXXX css ändern

hallo,

wie kann ich in einem html dokument MEHRERE elemente über getElementbyXXX ansprechen?

mein problem ist, dass ich auf einer seite einen layer einblende und dann die darunterliegenden klappboxen solange ausbelden muss, da die nicht vom layer überdeckt werden..

also im moment schauts so aus:

head:
<script type="text/javascript">
<!--
function setclass (id, klasse) {
document.getElementById(id).className=klasse;
}
//-->
</script>

<style type="text/css">
.formhidden{visibility:hidden;}
.formshow{visibility:visible;}
</style>

body:
<a href="javascript:setclass('klappbox01','formhidden');">ausblenden</a>

<a href="javascript:setclass('klappbox01','formshow');">einblenden</a>

tut zwar, spricht aber eben nur eine klappbox an..

über getElementsByTagName kann ich auch nur auf ein element zugreifen, weil ich ja in der [] angeben muss welches, oder? und getElementsByName fällt raus, da ich für die klappboxen unterschiedliche namen verwenden muss.

danke, birgit

  1. Hi,

    über getElementsByTagName kann ich auch nur auf ein element zugreifen, weil ich ja in der [] angeben muss welches, oder? und getElementsByName fällt raus, da ich für die klappboxen unterschiedliche namen verwenden muss.

    und was spricht dagegen, weitere Elemente über getElementById() anzusprechen?

    Also:

    function setclass (klasse) {  
    document.getElementById(id1).className=klasse;  
    document.getElementById(id2).className=klasse;  
    ...  
    }
    

    MfG Hopsel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    1. hallo zusammen,

      @joachim:

      Warum blendest Du nicht die Form aus?

      den ganzen form tag will ich nicht ausblenden, weil sonst auch die texte fehlen, die da so dazwischen stehen und das wird mir dann zu unruhig (der layer deckt nicht die komplette seite ab)

      Ansonsten sammle alle Element-ID's in einem Array und lasse eine Schleife drueber laufen...

      das hab ich nicht so ganz verstanden meinst du damit das gleiche wie hopsel (s.u.)?

      @hopsel

      und was spricht dagegen, weitere Elemente über getElementById() anzusprechen?

      Also:

      function setclass (klasse) {

      document.getElementById(id1).className=klasse;
      document.getElementById(id2).className=klasse;
      ...
      }

      
      >   
        
      könnte ich theoretisch schon machen, die klappboxen werden aber wenn's dann mal funktioniert über cms generiert und ich hab jetzt noch keinen überblick wieviele das dann mal sein können..  
        
      gibt's keine möglichkeit einfach alle die da sind anzusprechen?  
        
      danke, birgit
      
      1. hi,

        könnte ich theoretisch schon machen, die klappboxen werden aber wenn's dann mal funktioniert über cms generiert und ich hab jetzt noch keinen überblick wieviele das dann mal sein können..

        gibt's keine möglichkeit einfach alle die da sind anzusprechen?

        du könntest das ganze viel einfacher angehen, in dem du hauptsächlich CSS die arbeit machen lässt:

        form.versteckKlasse select { visibility:hidden; }

        dieser selektor trifft auf alle selects zu, die in einem formular mit der klasse "versteckKlasse" liegen.

        also bräuchtest du nur noch per javascript dem formular diese klasse zuweisen, um alle selectfelder darin auszublenden.

        klasse wieder wegnehmen - selects wieder sichtbar.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. @ wahsaga

          ahhhh! so einfach :-)

          danke, danke. funktioniert bestens!

          @joachim

          hab's jetzt einigermassen verstanden, aber offensichtlich habe ich das ganze eh von der falschen seite angepackt. mit der lösung von wahsaga ist's super einfach..

          trotzdem vielen dank!

          grüsse, birgit

      2. Hi,

        Ansonsten sammle alle Element-ID's in einem Array und lasse eine Schleife drueber laufen...

        Du gibst jedem zu versteckenden Element eine unique ID. Du erstellst ein Array, dass diese als Strings enthaelt:
        var my_inputs =  new Array("ID_1", "ID_2", ...);

        Dann laesst Du zum Verstecken/Zeigen eine Schleife laufen:
        function dpl(stat) {
            // hier das Array
            var my_inputs =  new Array("ID_1", "ID_2", "ID_3");
            // hier die Schleife
            for (i = 0; i < my_inputs.length; i++) {
                document.getElementById(my_inputs[i]).style.display = stat? "inline" : "none";
            }
        }

        so rufst Du zum verstecken: dpl(0);
        so zum Zeigen:  dpl(1);

        Mehr Infos zu den verwendeten Elementen findest Du hier in der Doku.

        das hab ich nicht so ganz verstanden meinst du damit das gleiche wie hopsel (s.u.)?

        vermutlich ;-)

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
  2. Hi,

    wie kann ich in einem html dokument MEHRERE elemente über getElementbyXXX ansprechen?

    Warum blendest Du nicht die Form aus?
    Ansonsten sammle alle Element-ID's in einem Array und lasse eine Schleife drueber laufen...

    Gruesse, Joachim

    --
    Am Ende wird alles gut.