Jo: Style mehrerer Divs der gleichen Klasse ändern

Hallo,

ich habe eine Seite mit einigen Div-Containern, welche gleiche Klassen (class="divcon") und dasselbe Elternelement haben.
Zunächst sind alle sind Div-Container mit der Klasse "divcon" nicht sichtbar (visibility="hidden").
Bei onClick auf einen Textlink wird der "angesprochene" Div-Container via JavaScript sichtbar:

<script type="text/javascript">
 function vis(a) {
 document.getElementById(a).style.visibility="visible";
 }
</script>

Soweit i. O. Nun will ich aber zusätzlich, dass alle anderen Div-Container derselben Klasse unsichtbar werden und nur der "angesprochene" erscheint.
Leider hatte ich mit einem ähnlichen JavScript wie dem obigen, nur mit document.getElementByClassName("divcon") keinen Erfolg...

Wäre für Angaben einer Lösung sehr dankbar!

MfG

  1. Hallo Jo.

    Leider hatte ich mit einem ähnlichen JavScript wie dem obigen, nur mit document.getElementByClassName("divcon") keinen Erfolg...

    Eine solche Methode gibt es im DOM ja auch nicht.
    Du kannst dir aber eine solche Methode schreiben bzw. eine geschriebene verwenden.

    Einen schönen Sonntag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
    1. Hallo Jo.
      Eine solche Methode gibt es im DOM ja auch nicht.
      Du kannst dir aber eine solche Methode schreiben bzw. eine geschriebene verwenden.

      Einen schönen Sonntag noch.

      Gruß, Ashura

      »»

      Hallo,

      besten Dank!

      MfG

    2. Hallo,

      Du kannst dir aber eine solche Methode schreiben bzw. eine geschriebene verwenden.

      Noch netter (allgemeingültiger) ist Robert Nymans Methode:

      function getElementsByClassName(oElm, strTagName, oClassNames){  
          var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);  
          var arrReturnElements = new Array();  
          var arrRegExpClassNames = new Array();  
          if(typeof oClassNames == "object"){  
              for(var i=0; i<oClassNames.length; i++){  
                  arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));  
              }  
          }  
          else{  
              arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));  
          }  
          var oElement;  
          var bMatchesAll;  
          for(var j=0; j<arrElements.length; j++){  
              oElement = arrElements[j];  
              bMatchesAll = true;  
              for(var k=0; k<arrRegExpClassNames.length; k++){  
                  if(!arrRegExpClassNames[k].test(oElement.className)){  
                      bMatchesAll = false;  
                      break;  
                  }  
              }  
              if(bMatchesAll){  
                  arrReturnElements.push(oElement);  
              }  
          }  
          return (arrReturnElements)  
      }
      

      Damit kann man dann zum Beispiel alle links mit der klasse myclass holen:

      getElementsByClassName(document, "a", "myclass");

      Oder natürlich auch alle Elemente mit der Klasse myclass:

      getElementsByClassName(document, "*", "myclass");

      Oder sogar Alle divs innerhalb des Elements mit der ID "container", mit einer klasse "col" und einer "left":

      getElementsByClassName(document.getElementById("container"), "div", ["col", "left"]);

      Was vielleicht noch wünschenswert wäre, wäre so etwas wie man im CSS mittels: div#container.col.left macht, also dass das div mit der ID container auch noch gleichzeigtig beide Klassen haben muss, aber naja das vielleicht für die Zukunft ;-).

      Grüße
      Jeena Paradies

      1. Hallo Jeena.

        Noch netter (allgemeingültiger) ist Robert Nymans Methode:

        Ja, sieht nicht schlecht aus.

        Könnte man HTMLElement browserübergreifend per prototype erweitern, könnte man sich sogar den ersten Parameter sparen.
        Könnte …

        document.getElementById("container").getElementsByClassName('foo');

        Wäre angenehmer, nicht?

        Einen schönen Montag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
        [HTML Design Constraints: Logical Markup]
  2. Hi,

    Leider hatte ich mit einem ähnlichen JavScript wie dem obigen, nur mit document.getElementByClassName("divcon") keinen Erfolg...

    Sinnvollerweise geht man dann nicht alle Elemente dieser Klasse durch, sondern man ändert einmalig direkt den Style der Klasse!

    Coding: CSS-Regeln auslesen & ändern

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!