zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Element ausblenden, wenn anderes eingeblendet wird

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 24.04.2009, 09:00
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.03.2009
Beiträge: 24
vik.alive befindet sich auf einem aufstrebenden Ast
Standard Element ausblenden, wenn anderes eingeblendet wird

Hallo,

ich habe folgendes Script auf meiner Homepage:
<script type="text/javascript">
function showHideLayer(id){
e = document.getElementById(id);
if(e.style.display=="inline"){
e.style.display = "none";
} else {
e.style.display = "inline";
}
}
</script>

Ich habe 4 Elemente auf der Homepage, die damit ein und ausgeblendet werden können.
Nun möchte ich, dass wenn ein Element eingeblendet wird, alle anderen ausgeblendet werden.

Wie mache ich das?
Schonmal DANKE!
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 24.04.2009, 10:01
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.913
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Was heißt alle Elemente?

Du meinst so?
HTML-Code:
var e = document.getElementById(id);
var all = document.getElementByTagName('*');
for(var i = 0; i < all.length;i++)
if(all[i] != e) all[i].style.display = 'none';
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 24.04.2009, 10:56
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.03.2009
Beiträge: 24
vik.alive befindet sich auf einem aufstrebenden Ast
Standard

Moin!

Danke erstmal für deine Antwort.

Leider weiß ich nicht genau wie ich das in das script einbauen soll.

Wo soll die for-Schleife hin?

Hab noch nicht viel mit Javascript gearbeitet.

Danke,
Vik
Mit Zitat antworten
  #4 (permalink)  
Alt 24.04.2009, 11:06
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.913
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Das war eigentlich kein ernst gemeintes Beispiel - du kannst das in deine Funktion einbauen, es wird aber alles - wirklich alles - ausgeblendet, ausser dem einem Element. Was du vermutlich nicht willst. Daher meine Frage, was meinst du mit alles?
Mit Zitat antworten
  #5 (permalink)  
Alt 24.04.2009, 12:00
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.03.2009
Beiträge: 24
vik.alive befindet sich auf einem aufstrebenden Ast
Standard

achso.

Ich habe 4x <span> mit einer festen id (also nicht eine aus der Datenbank, sondern ein Name).

In einer zweiten Spalte habe ich 4 Links. Nun möchte ich, dass beim Klick auf einen dieser Links das entsprechende span-Objekt von hidden auf inline gewechselt wird. Das funktioniert auch.

Ich möchte nun hinzufügen, dass bei öffnen eines zweiten <span>'s die anderen auf hidden gestellt werden.

War das besser zu verstehen?
Mit Zitat antworten
  #6 (permalink)  
Alt 24.04.2009, 12:15
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.913
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Meinst du das das vorherige Element wieder in seinen Ursprungszustand gebracht wird?
Das wäre einfach:

HTML-Code:
<script type="text/javascript">
var old = null;
function showHideLayer(id){
var e = document.getElementById(id);
if(e.style.display=="inline"){
e.style.display = "none";
} else {
e.style.display = "inline";
}
if(old) old.style.display = '';
old = e;
}
</script>
Mit Zitat antworten
  #7 (permalink)  
Alt 24.04.2009, 12:29
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.03.2009
Beiträge: 24
vik.alive befindet sich auf einem aufstrebenden Ast
Standard

Moin.

Das funktioniert leider nicht.

Die Spans werden eingeblendet, aber können gar nicht mehr ausgeblendet werden, wenn man drauf klickt, und verschwinden auch nicht, wenn man ein anderes öffnet.

Was genau soll die Variable old bewirken?

DANKE!
Mit Zitat antworten
  #8 (permalink)  
Alt 24.04.2009, 14:18
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.03.2009
Beiträge: 24
vik.alive befindet sich auf einem aufstrebenden Ast
Standard

Ich hab da jetzt eine halbe Stunde dran rumgebastelt, aber es will einfach nicht klappen.

Hab es jetzt so geändert:
HTML-Code:
<script type="text/javascript">
function showHideLayer(id){
var e = document.getElementById(id);
var last = null;
if(e.style.display=="none"){
e.style.display = "inline";
last.style.display = "none";
last = e;
} else {
e.style.display = "none";
}
}
</script>
Die span's werden ein und ausgeblendet, wenn man auf den Link klickt, allerdings wird der letzte NICHT ausgeblendet. Das heißt also, dass man alle 4 einblenden kann, wenn man die Links hintereinander durchklickt.
Mit Zitat antworten
  #9 (permalink)  
Alt 24.04.2009, 14:27
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.913
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Der Code hat nichts mehr mit meinem zu tun. Warum machst du die Variabel last lokal?

[EDIT]und warum schmeisst du die Prüfung ob der Wert etwas enthält raus? Werf doch mal einen Blick in die Fehlerkonsole.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 24.04.2009, 14:46
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.03.2009
Beiträge: 24
vik.alive befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich das script von dir benutze, kann man alle einmal einblenden, und dann passiert gar nichts mehr. Die Fehlerkonsole gibt auch nichts aus.


Ich hab die letzten 2 Zeilen von dir raus genommen weil ich gar nicht wusste was die sollen.
Was macht die if Abfrage denn?


Ich hab das alles so "geplant":
Wenn etwas schon anzeigt wird, wird der style einfach wieder auf none gestellt.
wenn was eingeblendet werden soll, wir es auf inline gestellt, das letzte auf none gesetzt, und das aktuelle als neues "last" gesetzt. Also so:
HTML-Code:
e.style.display = "inline";
last.style.display = "none";
last = e;
Warum funktioniert das nicht?

Wenn ich das als letztes von mir gepostete script ausführe und einen link anklicke kommt auf der Fehlerkonsole "Fehler: last is null".

Geändert von vik.alive (24.04.2009 um 14:49 Uhr)
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Festanstellung bei der Xing AG als Web Developer (HTML/CSS) NEOX Offtopic 10 17.07.2008 17:11
Element in anderes Element einbauen netAction CSS 3 17.03.2008 22:27
Liste im IE StarSt0rm CSS 3 22.08.2007 20:04
element ausblenden, aber klickbar belassen antiheld2000 CSS 4 07.05.2007 16:22
Element mit Javascript ein- und ausblenden yellowfox Javascript & Ajax 1 17.08.2006 16:05


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:40 Uhr.