benpen: divs per Click ausblenden und dafür andere einblenden

Hallo,
ich habe hier drei divs untereinander.
In jedem steht der selbe Text nur in verschiedenen Sprachen. Als Standart soll der deutsche Text sichtbar sein und englisch und französich nicht. Jetzt möchte ich irgendwo ein Link "English" platzieren. Wenn man dort klickt soll der deutsche Text (div) verschwinden und der englische Text (div) sichtbar werden.
Wie könnte ich das verwirklichen. Könnt ihr mir da einen Ansatz geben.
Ich schätze über Klassen und php, oder?

So siehts aus:

  
<div id=deutsch>Hallo</div>  
  
<div id=englisch>Hello</div>  
  
<div id=französisch>Bonjour</div>  

  1. Hallo

    Hi

    Wie könnte ich das verwirklichen. Könnt ihr mir da einen Ansatz geben.
    Ich schätze über Klassen und php, oder?

    Muss meiner meinung nach clientseitig und nicht serverseitig geschehen, also zb mit Javascript:

    <script type="text/javascript">
    function sprache(sprache){
    if(sprache == en){
    document.getElementById(en).style.display='block';
    document.getElementById(de).style.display='none';
    document.getElementById(fr).style.display='none';
    }else if(sprache == fr){
    document.getElementById(fr).style.display='block';
    document.getElementById(de).style.display='none';
    document.getElementById(en).style.display='none';
    }else(sprache == de){
    document.getElementById(de).style.display='block';
    document.getElementById(en).style.display='none';
    document.getElementById(fr).style.display='none';
    }else

    }

    </script>

    <a onclick="var sprache=en;sprache(sprache);">Englisch</a>
    <a onclick="var sprache=fr;sprache(sprache);">Französisch</a>
    <a onclick="var sprache=de;sprache(sprache);">Deutsch</a>

    <div id="de" style="display:block" >Hallo</div>

    <div id="en" style="display:none">Hello</div>

    <div id="fr" style="display:none" >Bonjour</div>

    Ich würde das irgendwie so machen. Es macht eigentlich genau das, was du willst. Ist ungetestet.

    Gruss Kati

    1. Muss meiner meinung nach clientseitig und nicht serverseitig geschehen, also zb mit Javascript:

      nein, NEIN, NEIN!!!, NEIN!!!!1111elf

      lerne, junger padawan:
      http://www.w3.org/International/questions/qa-when-lang-neg

      btw: bei einer sucher in der suchmaschine meiner wahl finde ich mit "language negotiation" sofort diesen artikel, danke gunnar - toll gemacht

      1. nein, NEIN, NEIN!!!, NEIN!!!!1111elf

        Ich hab's gewusst! Du hasst doch noch Grossbuchstaben auf der Tastatur.

        mfg Beat

        --
        Selber klauen ist schöner!
        1. Ich hab's gewusst! Du hasst doch noch Grossbuchstaben auf der Tastatur.

          nein, die hab ich alle abgerubbelt und die shift-taste entfernt ;) - sämtliche mit shift zu erzeugende sonderzeichen suche ich über die windows zeichentabelle heraus :p

          1. Ich hab's gewusst! Du hasst doch noch Grossbuchstaben auf der Tastatur.

            nein, die hab ich alle abgerubbelt und die shift-taste entfernt ;) - sämtliche mit shift zu erzeugende sonderzeichen suche ich über die windows zeichentabelle heraus :p

            Und ich dachte über copy & paste aus anderen Beiträgen.

      2. nein, NEIN, NEIN!!!, NEIN!!!!1111elf

        Ok, ok, oke.... schon gut!! *michduck*
        Aber das "1111elf" versteh ich irgendwie nich.....

        1. Aber das "1111elf" versteh ich irgendwie nich.....

          grosschreibung wird häufig als schreien interpretiert, ein ausrufezeichen am wort/satzende unterstreicht dies - wenn man nun oft auf die 1-taste hämmert um mit shift ein rufzeichen zu erzeugen und die shift-taste dann loslässt und weiter auf eins hämmert, kommen die einsen zustanden - wenn man dies geistig und absurd weiterstrickt, kann man noch mehr nachdruck in die sache bringen, wenn man elf hinten dranschreibt - etwas pseudo-l337, aber das is halt so ;)

          genausogut hätte ich schreiben können:
          <strong><em><strong><em><strong><em tyle="text-transform: uppercase;">nein</em></strong></em></strong></em></strong>

          1. Mahlzeit,

            wenn man dies geistig und absurd weiterstrickt, kann man noch mehr nachdruck in die sache bringen, wenn man elf hinten dranschreibt - etwas pseudo-l337, aber das is halt so ;)

            "Absurd"? Was ist das? ;-)

            Besonders albern ist es dann natürlich, wenn man z.B. "!!!!111einseinsELFELF" schreibt ... ;-)

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Hallo benpen,

    in PHP würde ich es mit einer switch/case-Anweisung machen:

    <?php  
    switch($_GET['lang'])  
     {  
      case 'fr':  
       ?><div id=französisch>Bonjour</div><?php  
       break;  
      case 'en':  
       ?><div id=englisch>Hello</div><?php  
       break;  
      default:  
       ?><div id=deutsch>Hallo</div><?php  
     }  
      
    ?><p><a href="<?php basename($_SERVER['PHP_SELF']); ?>?lang=en">English</p>  
    
    

    Mit JavaScript könnte man das noch "ruckelfreier" machen, indem man per onclick getElementById.style.display auf "block" oder "none" stellt. Falls JavaScript deaktiviert ist, könnte das dann immernoch serverseitig von PHP erledigt werden.

    Alex

  3. Mahlzeit,

    ich habe hier drei divs untereinander.
    In jedem steht der selbe Text nur in verschiedenen Sprachen.

    Insofern bietet es sich an, dem <div> auch gleich die Information mitzugeben, welche Sprache es enthält:

    <div class="Hallo" lang="de">Hallo</div>  
    <div class="Hallo" lang="en">Hello</div>  
    <div class="Hallo" lang="fr">Bonjour</div>
    

    Als Standart

    Standart? Sicher?

    soll der deutsche Text sichtbar sein und englisch und französich nicht. Jetzt möchte ich irgendwo ein Link "English" platzieren. Wenn man dort klickt soll der deutsche Text (div) verschwinden und der englische Text (div) sichtbar werden.
    Wie könnte ich das verwirklichen. Könnt ihr mir da einen Ansatz geben.
    Ich schätze über Klassen und php, oder?

    Ich schätze nicht. Überleg Dir, wo etwas stattfinden soll: im Browser des Benutzers. Wie sinnvoll sind da serverseitige Programmiersprachen? Browserseitiger Code - z.B. Javascript - könnte in Verbindung mit vernünftigem, semantischen HTML-Code und entsprechendem CSS genau das, was Du willst:

    <script type="text/javascript">  
    [code lang=javascript]  
      
    function change(cls, lng) {  
      var divs = document.getElementsByTagName('DIV'); // Alle <div>-Elemente in Array einlesen  
      var re = RegExp.new('/' + cls + '/'); // Regulären Ausdruck anhand des übergebenen Klassennamens erstellen  
      
      for (var i = 0; i < divs.length; i++) { // Für jedes <div> ...  
        var div = divs[i];  
      
        if (re.test(div.className)) { // ... schauen, ob das <div> den übergebenen Klassenname hat  
          if (div.lang == lng) { // Wenn <div> übergebene Sprache hat ...  
            div.style.display = 'block'; // ... <div> einblenden ...  
          } else {  
            div.style.display = 'none'; // ... ansonsten ausblenden  
          }  
        }  
      }  
    }
    

    </script>

    <span onclick="change('Hallo', 'en');">English</span>[/code]

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|