Zur Navigation

Problem mit "Blätterfunktion"

1 Tilman

Hallo!

Ich nutze folgenden Code, um eine Blätterfunktion auf einer Seite möglich zu machen:
function news_seiten(zeigen){
    for (i = 0; i < document.getElementsByTagName("form").length; i++){
        document.getElementsByTagName("form")[i].style.display='none';
        }
    document.getElementById(zeigen).style.display='block';
}

Die verschiedenen "Seiten" sind jeweils durch diesen Code <form id="seitex"> "geseitet". Mit disem Hyperlink blättert man zur anderen "Seite":
<a href="javascript:news_seiten('seitex')">...</a>

x steht für die "Seitenzahl".

Mein Problem:
Ich habe oberhalb ein Suchfeld. Das verschwindet aber dann, wenn man auf die nächste "Seite" wechselt. Kann man dieses Formular irgendwie "ausschließen"?

19.07.2008 18:08

2 Jörg

Es kommt darauf an, an welcher Stelle das Suchformular steht. An erster Stelle hat es die ID 0 - dann kannst du folgendermaßen versuchen, es vom Ausblenden auszuschließen:

function news_seiten(zeigen){
    for (i = 0; i < document.getElementsByTagName("form").length; i++){
         if (1 != 0) {    
            document.getElementsByTagName("form")[i].style.display='none';
         }
    }
    document.getElementById(zeigen).style.display='block';
}

20.07.2008 10:58

3 Tilman

Hallo Jörg. Ich habe es so gemacht (funktioniert aber überhaupt nicht mehr - wegen mir):


...<body>
<script>
function news_seiten(zeigen){
    for (i = 0; i < document.getElementsByTagName("form").length; i++){
        if (1 != 0) {
            document.getElementsByTagName("form")[i].style.display='none';
         }
    document.getElementById(zeigen).style.display='block';
}
</script>
...
<form action="..." name="suche" id="0" method="get">
...
</form>

<form id="1">...
</form>
<form id="2" >...</form>
...
<a href="javascript:news_seiten('1')">1</a>
<a href="javascript:news_seiten('2')">2</a>

20.07.2008 11:59 | geändert: 20.07.2008 12:00

4 Jörg

Sorry, da hatte ich mich vertippt - es muss natürlich "i" heißen und nicht "1":

if (i != 0) {

Das id="0" etc. kannst (und solltest) du weglassen - die Formulare werden automatisch entsprechend der Reihenfolge im Quelltext durchgezählt

20.07.2008 12:10

5 Tilman

Ja, funktioniert jetzt! Danke!

20.07.2008 14:02

6 Tilman

Ich bräuchte diesen Code nocheinmal für eine Art "Registerkartenmenü":

Ich habe zwei Div-Container, deren id/name sind: kommentare und neuerkommentar.

Da ich nicht den JavaScript-Code ändern muss, wenn ich Div-Container entferne oder hinzufüge, würde ich das Script gerne etwas anders haben:
Es soll zwei Funktionen geben, die mit einem Link aufgerufen werden. Die eine Funktion macht "kommentare" sichtbar unf "neuerkommentar" unsichtbar, die andere Funktion genau das Gegenteil. Allerdings soll beim Laden der Seite "kommentare" bereits sichtbar sein.

Wie kann ich das realisieren? (Leider kenne ich mich garnicht mit der Programmierung von JS aus.)

12.03.2009 15:49

7 Jörg

Ich würd's so probieren:

function showcomments()
{
document.getElementById("kommentare").style.visibility="visible";
document.getElementById("neuerkommentar").style.visibility="hidden";
}

function shownewcomment()
{
document.getElementById("kommentare").style.visibility="hidden";
document.getElementById("neuerkommentar").style.visibility="visible";
}

Den Anfangszustand kannst du normal über CSS definieren.

12.03.2009 19:53

8 Tilman

Hallo Jörg!

Vielen Dank. Funktioniert auch. Allerdings werden statt den unsichtbar gemachten Div-Containern dann einfach eine leere Fläche angezeigt. Wie kann ich das Problem beheben?

13.03.2009 18:01

9 Jörg

Das weiß ich nicht. Dazu müsstest du mal eine Beispielseite zeigen oder den relevanten Code posten.

13.03.2009 20:05

10 Tilman

Der Code:

<div>
<div id="kommentare">
<div id="title">Kommentare</div>
... Inhalt
</div>

<div id="neuerkommentar">
<div id="title">Neuer Kommentar</div>
... Formular
</div>


</div>

16.03.2009 14:47