[JavaScript] Zugriff auf eine Klasse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] Zugriff auf eine Klasse

    Hallo, ich habe jeweils einen deutschen und einen englischen Text in einem Div-Tag - beide unterscheiden sich in den Klassen (der Div-Tag mit dem deutschen Text ist der Klasse 'de_DE' zugeordnet und der Div-Tag mit dem englischen Text der Klasse 'en_US').
    Ich möchten nun per JavaScript den einen Div-Block ausblenden und den anderen dafür einblenden.

    Ich habe dazu leider nichts gefunden und habe einfach mal folgendes ausprobiert:

    document.all.className("de_DE").style.display="block";
    document.all.className("en_US").style.display="none";

    Nun das geht nicht... aber ist euch vielleicht ein Anhaltspunkt, worauf ich hinaus will...

    PS: ich habe sehr viel Lösungen gefunden, wo das ID-Attribut verwendet wird - dies Ansätze bringen mir aber nichts, weil ich viele Div-Blöcke auf einmal umschalten möchte.

    Bin neu auf dem Gebiet... Hat jemand eine Idee?

  • #2
    Was geht nicht? Wie waers wenn du uns mal deine JS-Funktion fuer das Ausblenden zeigst?
    Niveau sieht nur von unten aus wie Arroganz!

    Kommentar


    • #3
      Das geht so nicht.

      Entweder du packst alle deutschen Texte in einen großen Container mit der ID de_DE und alle englischen in einen Container mit der ID en_US.
      Dann kannst du mit einem einmaligen Aufruf von getElementById arbeiten

      Oder du bleibst bei der bisherigen Variante und liest mit getElementsByTagName alle div-Tags in ein Array, iterierst darüber und prüfst den Wert von alle_divs[i].classname

      Oder du sendest nicht von vorneherein alle Texte in allen Sprachen an den Client sondern bei seite.ext?lang=de_DE den einen und bei seite.ext?lang=en_US den anderen

      Kannst ja auch mal http://forum.de.selfhtml.org/archiv/...77914/#m450220 lesen und den Links dort folgen
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Re: [JavaScript] Zugriff auf eine Klasse

        Du willst also eine Funktion getElementsByClassName haben?
        Dann google danach, sowas haben schon Leute vor dir gebraucht und bereitgestellt.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Original geschrieben von mrhappiness
          Oder du sendest nicht von vorneherein alle Texte in allen Sprachen an den Client sondern bei seite.ext?lang=de_DE den einen und bei seite.ext?lang=en_US den anderen
          Am besten du bedienst dich gleich dieser Funktion.
          Niveau sieht nur von unten aus wie Arroganz!

          Kommentar


          • #6
            Original geschrieben von mrhappiness
            Das geht so nicht.
            Ja, hatte nichts dazu gefunden (nur die Lösung mit getElementById() ) - ich habe mit dem Code nur versucht zu beschreiben, worauf ich hinaus will...

            Entweder du packst alle deutschen Texte in einen großen Container mit der ID de_DE und alle englischen in einen Container mit der ID en_US.
            Dann kannst du mit einem einmaligen Aufruf von getElementById arbeiten
            Das geht aber bloß mit einem Container - ich habe aber mehrere...

            Oder du bleibst bei der bisherigen Variante und liest mit getElementsByTagName alle div-Tags in ein Array, iterierst darüber und prüfst den Wert von alle_divs[i].classname
            Danke für den Tipp!!!
            So werde ich es versuchen...

            Oder du sendest nicht von vorneherein alle Texte in allen Sprachen an den Client sondern bei seite.ext?lang=de_DE den einen und bei seite.ext?lang=en_US den anderen
            Dann ist bei dem Umschalten der Sprache aber ein Reload der Seite nötig... habe da auch schon daran gedacht, gefällt mir aber nicht ganz so sehr... werde es erst einmal mit deinem Vorherigen Tipp probieren!

            Kannst ja auch mal http://forum.de.selfhtml.org/archiv/...77914/#m450220 lesen und den Links dort folgen [/B]
            Besten Dank für deine Ideen und für den Link!!!
            Werde mir alles anschauen und meine Lösung hier posten.

            Kommentar


            • #7
              Original geschrieben von MrBusty
              Dann ist bei dem Umschalten der Sprache aber ein Reload der Seite nötig...
              Ja, und das wäre auch gut so - weil dann beide Sprachversionen von Inhalt X jeweils eine eigenständige Ressource darstellen.

              Beide Sprachversionen in einem Dokument vorzuhalten, wäre ziemlicher Unfug.
              Nützt dem Besucher nichts - ständig hin- und herschalten tut man nicht, maximal ein mal, danach erwarte ich von dir sofort automatisch weitere Inhalte in der gewählten Sprache präsentiert zu bekommen. Soll ich jetzt trotzdem weiterhin mit jeder neuen Inhaltsseite beide Versionen laden müssen ...?
              Und Suchmaschinen dürften es auch nicht toll finden, ein Kauderwelsch aus zwei Sprachen in einem Dokument vorzufinden.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Original geschrieben von wahsaga
                Ja, und das wäre auch gut so - weil dann beide Sprachversionen von Inhalt X jeweils eine eigenständige Ressource darstellen.

                Beide Sprachversionen in einem Dokument vorzuhalten, wäre ziemlicher Unfug.
                Nützt dem Besucher nichts - ständig hin- und herschalten tut man nicht, maximal ein mal, danach erwarte ich von dir sofort automatisch weitere Inhalte in der gewählten Sprache präsentiert zu bekommen. Soll ich jetzt trotzdem weiterhin mit jeder neuen Inhaltsseite beide Versionen laden müssen ...?
                Nun, es ist aber ziemlich stylish, wenn die Seite nicht erst neu geladen wird - auch wenn man nur einmal die Sprache wechselt....

                Was ist das Problem, wenn ständig beide Inhalte geladen werden?
                Es handelt sich bloß um wenig Text... also um die 1kb an Daten - jedes kleine Icon ist da größer!

                Und Suchmaschinen dürften es auch nicht toll finden, ein Kauderwelsch aus zwei Sprachen in einem Dokument vorzufinden.
                Gut, dass wäre ein Argument, was ich anerkennen würde...
                ist aber Googles Problem! lol

                PS: ich lege auch keinen gesonderten Wert darauf durch eine Suchmaschine gefunden werden....


                Ok, hier ist mein Code:

                PHP-Code:
                <script type="text/javascript">
                    <!-- 

                    
                // globale Variablen:
                    
                var language;
                    var 
                langArray = new Array("de_DE""en_US");

                    function 
                switchLanguage() {

                        
                // Hier wird der Sprach-Variable (language)
                        // der nächste Wert aus dem Sprachen-Array (langArray) zugeordnet:
                        
                for(var l=0l<langArray.lengthl++) {
                            if(
                language == langArray[l]) {
                                if(
                l+== langArray.length) {
                                    
                language langArray[0];
                                    break;
                                } else {            
                                    
                language langArray[l+1];
                                    break;
                                }
                            }
                        }
                        
                        
                showThatLanguage(language);
                    }

                    
                    function 
                showThatLanguage(lang) {
                        var 
                tagArray  = new Array("div""ul");
                        var 
                allDivs   = new Array();

                        for(var 
                i=0i<tagArray.lengthi++) {
                            
                allDivs[i] = document.getElementsByTagName(tagArray[i]);

                            for(var 
                j=0j<=allDivs.lengthj++) {
                                if( (
                allDivs[i][j].className).search(lang) != -) {
                                    
                allDivs[i][j].style.display "block";
                                } else {

                                    for(var 
                k=0k<langArray.lengthk++) {
                                        if( (
                allDivs[i][j].className).search(langArray[k]) != -) {
                                            
                allDivs[i][j].style.display "none";
                                        }
                                    }
                                }
                            }
                        }
                    }

                    
                // -->
                </script

                Kommentar


                • #9
                  aaalso.. hoffentlich sieht das niemand außer dir

                  erstmal ein fehler in der funktion showThatLanguage:
                  PHP-Code:
                  for(var j=0j<=allDivs.lengthj++) <--- 
                  allDivs.length wird nie über 2 hinauskommen weil du ja nur zwei elemente reinpackst, nämlich die arrays mit den elementen. du willst ja aber die gefundenen elemente durchgehen.

                  zweitens kann man das irgendwie eleganter und lesbarer machen:
                  PHP-Code:
                  var language 0;
                  var 
                  langs = new Array("de_DE","en_EN");

                  function 
                  switchLanguage(){
                    
                  language = (language == 0) ? 0;
                    
                  showThatLanguage();
                  }

                  function 
                  showThatLanguage(){
                    var 
                  elements document.getElementsByTagName("div");
                    for(var 
                  i=0i<elements.lengthi++)
                      if(
                  elements[i].className.search(langs[language]) != -1){
                        
                  elements[i].style.display "block";
                      }else{
                        
                  elements[i].style.display "none";
                      }
                    }

                  und wenn du für mehr tags wechseln willst dann musst du halt noch ne schleife drumsetzten. und du hast noch das problem das du bei jedem div der sprachenunabhängig angezeigt werden soll beide klassen eintragen musst.
                  Zuletzt geändert von frodenius; 24.01.2007, 11:50.
                  blllubb

                  Kommentar

                  Lädt...
                  X