divs per Click ausblenden und dafür andere einblenden
benpen
- php
1 kati0 suit0 Beat0 kati0 suit- menschelei
0 EKKi
0 Alex1 EKKi- javascript
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>
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
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
nein, NEIN, NEIN!!!, NEIN!!!!1111elf
Ich hab's gewusst! Du hasst doch noch Grossbuchstaben auf der Tastatur.
mfg Beat
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
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.
nein, NEIN, NEIN!!!, NEIN!!!!1111elf
Ok, ok, oke.... schon gut!! *michduck*
Aber das "1111elf" versteh ich irgendwie nich.....
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>
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
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
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