amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Javascript - schon wieder! [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

30.10.2002, 09:35 Uhr

Hammer
Posts: 2899
Nutzer
Moin

Mit meinem script zum texte ein und ausblenden bin ich schon fast fertig. heute bin ich gerade an der Variante des Durchblätterns. An und für sich recht einfach, nur beim Übergeben eines wertes spinnt Javascript. (oder bin ich es ?)

var text2 = "Text 2<p>Hier ist der zweite Text im Bunde.<br>Der wurde komplett im Javascripteditor eingegeben.<br>Leider ist das etwas unkomfortabel, aber man kann nicht alles haben!<br>Text 1 ist der Starttext, mittels des Schalters (Grafik) kann man zwischen Text 2 und Text 3 durchblättern.</p>";
var text1 = "Text 3<p>der dritte Text im Bunde<br>Hier könnte alles weiter stehen, mir fällt nur nichts ein!<br>Bilder kann man entweder im Text verankern oder ausserhalb des Textes wie hier.</p>";
var nr = 0;
var a = 0;

function next(a)
{
if (a == 3)
{
a = 0
nr = 0
}
if (a < 3)
{
nr = nr + 1
/* var wert = String (nr); */
document.all.mein.innerHTML = "text" + nr;
}
}

OK! Erst werden die Variablen deklariert!
text2 und text3 enthalten den text zum durchblättern.
nr und a sind zum hochzählen/durchblättern.
Und wert habe ich noch dazu getan weil eben in der zeile darunter die übergabe des Strings nicht so recht funktioniert.
Er übergibt zwar den string richtig, aber der text wird nicht durchgeblättert!

Wo ist der Fehler? Mit der Var wert gehts auch nicht!
--
MFG

Hammer

[ - Antworten - Zitieren - Direktlink - ]

30.10.2002, 12:04 Uhr

tokai
Posts: 1071
Nutzer

Ich verstehe zwar den Zusammennahng deines Scriptes nicht richtig,
aber vielleicht hilft der folgende Code-Schnippsel (auf die Schnelle nicht getestet :)

code:
var text1 = "Text 1";
var text2 = "Text 2";
var text3 = "Text 3";
var a     = 0;

function Next()
{
    a = a + 1;

    if (a>=2)
    {
        a = 0;
    }

    select(a)
    {
        case 0:
           var out = text1;
           break;

        case 1:
           var out = text2;
           break;

        case 2:
           var out = text3;
           break;

        default:
           var out = "huch?";
    }

    document.all.mein.innerHTML = out;
}


Wichtig ist, dass du die Variable a 'global' lässt, wenn du a als Funktionspararmeter übergibst wird sie 'lokal' (d.h. nur innerhalb der Funktion gültig.) Probiere einfach eine debug-Ausgabe von alert(a); innerhalb der Funktion um den Wert von a zur Laufzeit zu überprüfen.
--
http://www.christianrosentreter.de (aktualisiert! :) )

[ - Antworten - Zitieren - Direktlink - ]

30.10.2002, 13:30 Uhr

Hammer
Posts: 2899
Nutzer
Ja das mit alert (a) mache ich ständig, damit ich überhaupt sehen kann ob die werte korrekt sind. beim Fehler kommt da nämlich nix! :D

Ich tippe eher auf ein Problem bei Var text1 = "text" und weiter unten dann document.all.mein.innerHTML = "text" + nr; Ich kriege zwar mit "text" + nr; den richtigen String "text1", aber so macht er es nicht.
Irgend wie mag er die Übergabe so nicht, obwohl es ja ein String ist!
Ich werde es mal ausprobieren. :D danke schon mal.

--
MFG

Hammer

[ - Antworten - Zitieren - Direktlink - ]

30.10.2002, 14:23 Uhr

tokai
Posts: 1071
Nutzer
Zitat:
Original von Hammer:
Ja das mit alert (a) mache ich ständig, damit ich überhaupt sehen kann ob die werte korrekt sind. beim Fehler kommt da nämlich nix! :D

Ich tippe eher auf ein Problem bei Var text1 = "text" und weiter unten dann document.all.mein.innerHTML = "text" + nr; Ich kriege zwar mit "text" + nr; den richtigen String "text1", aber so macht er es nicht.
Irgend wie mag er die Übergabe so nicht, obwohl es ja ein String ist!
Ich werde es mal ausprobieren. :D danke schon mal.


du willst wohl mit "text"+nr den Variablennamen erzeugen? Das klappt natürlich nicht. Du kannst nur mit den Werten der Variablen arbeiten. Deshalb hatte ich auch die switch-Anweisung eingefügt. :)



--
http://www.christianrosentreter.de (aktualisiert! :) )

[ - Antworten - Zitieren - Direktlink - ]

30.10.2002, 16:35 Uhr

Hammer
Posts: 2899
Nutzer
Zitat:
Original von tokai:

du willst wohl mit "text"+nr den Variablennamen erzeugen? Das klappt natürlich nicht. Du kannst nur mit den Werten der Variablen arbeiten. Deshalb hatte ich auch die switch-Anweisung eingefügt. :)



Ja, so sollte es eigentlich laufen. Jedenfalls funktioniert es mit meinem kleinen Javscript auf meiner HP, wo ich die Bilder durchschalte! Na so ähnlich weil es ein anderer Befehl ist!
Warum geht das bei innerHTML nicht?
http://people.freenet.de/ThaHammer/ Hier mal zum anschauen was ich meine. :D
Dein script funktioniert aber leider auch nicht. Ein paar Änderungen waren nötig (vertippt nochmal! :D ) Aber es rührt sich nichts, obwohl die Werte stimmen (Alertausgabe).
Wie übergebe ich den variablenname ohne das ich für jeden textrahmen eine if dann den text schreibe?
Sag mal kann ich die texte nicht im CSS File verstecken? ich habe da irgendwas im hinterkopf, aber es fällt mir nicht mehr ein. SelfHTML wühle ich schon seit Tagen durch, ohne Erfolg!
--
MFG

Hammer

[ - Antworten - Zitieren - Direktlink - ]

30.10.2002, 17:25 Uhr

Hammer
Posts: 2899
Nutzer
So, ich habe gerade mein zweites Javascript Buch durchgeschaut und meinen Fehler in deinem Script gefunden! :D

function Next1()
{
a = a + 1;

if (a == 4)
{
a = 1;
}
switch(a)
{
case 1:
var out = text1;
break;
case 2:
var out = text2;
break;
case 3:
var out = text3;
break;
default:
var out = "huch?";
break;
}
document.all.mein.innerHTML = out;
}

So funktioniert das nämlich! :D
Nur wenn es mehrere texte werden, wird auch der teil mit dem case recht groß? Na soviel macht man ja auch nicht damit.

Danke für deine Hilfe, alleine hätte ich noch die ganze woche gebraucht! :D :lach: :lach: :D
--
MFG

Hammer

[ - Antworten - Zitieren - Direktlink - ]

01.11.2002, 09:16 Uhr

tokai
Posts: 1071
Nutzer
Huch.... ich weiss auch nicht weshalb ich da "select" geschrieben habe, muss natürlich "switch" heissen. Ich würde dir trotzdem empfehlen statt "a==4" "a>3" bzw. "a>=4" (grösser gleich) zu schreiben. Das ist sicherer und sauberer. :)


Um den Source kleiner zu bekommen kannst du natürlich auch einfach ein array nutzen:

(cut)
source siehe posting weiter unten :)

--
http://www.christianrosentreter.de (aktualisiert! :) )

[ Dieser Beitrag wurde von tokai am 01.11.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

01.11.2002, 10:02 Uhr

tokai
Posts: 1071
Nutzer
hier nochmal der komplette Source (getestet mit IE6):

code:
<html>
<head>

    <title>$VERS: next.javascript 1.0 (01.11.02) ©2002 tokai</title>

    <script language="JavaScript">
    <!--
        var myArray = new Array("Text 1","Text 2","Text 3","Text 4");
        var a       = 0;

        function Next_()
        {
            a = (a>=3) ? 0 : a+1;
            document.all.mein.innerHTML = myArray[a];
        }

    //-->
    </script>

    <style type="text/css">
    <!--
        div
        {
            font-family: Verdana, Arial, Helvetica, sans-serif;
            font-size:   12px;
            line-height: 30px;
            color:       #000000;
            background:  #bbbbbb;
            width:       200px;
        }
    -->
    </style>

</head>

<body>

   <center>
   <div id="mein" onClick="Next_()" align="center">
       hier klicken! :)
   </div>
   </center>

</body>
</html>

--
http://www.christianrosentreter.de (aktualisiert! :) )

[ Dieser Beitrag wurde von tokai am 01.11.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

01.11.2002, 10:05 Uhr

Hammer
Posts: 2899
Nutzer
Zitat:
Original von tokai:

Huch.... ich weiss auch nicht weshalb ich da "select" geschrieben habe, muss natürlich "switch" heissen. Ich würde dir trotzdem empfehlen statt "a==4" "a>3" bzw. "a>=4" (grösser gleich) zu schreiben. Das ist sicherer und sauberer. :)

Um den Source kleiner zu bekommen kannst du natürlich auch einfach ein array nutzen:

function Next2()
{
a = a + 1;

if (a > 3)
{
a = 0;
}

document.all.mein.innerHTML = myArray[a];
}
[/code]


--
http://www.christianrosentreter.de (aktualisiert! :) )

Ne der Wert oben stimmt so, ich habe momentan nur 3 Texte zum demonstrieren.
Array den Befehl kenne ich noch gar nicht, meinst das da die innerHTML nicht wieder Probleme bereitet? So wie bei meinem ersten Versuch mit der zusammengesezten Variable?
Ausprobieren werde ich es auf alle Fälle, schon weil ich von den Var wegkommen will, die mag ich nicht so gerne! :D
Danke.


--
MFG

Hammer

[ Dieser Beitrag wurde von Hammer am 01.11.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

01.11.2002, 10:08 Uhr

tokai
Posts: 1071
Nutzer

Das funktioniert! Siehe komplett-Beispiel! :)
--
http://www.christianrosentreter.de (aktualisiert! :) )

[ - Antworten - Zitieren - Direktlink - ]

01.11.2002, 20:51 Uhr

Hammer
Posts: 2899
Nutzer
Zitat:
Original von tokai:

Das funktioniert! Siehe komplett-Beispiel! :)
--
http://www.christianrosentreter.de (aktualisiert! :) )



Ja gfunktionierte auf Anhieb! :D

Man dankt!
--
MFG

Hammer

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Javascript - schon wieder! [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.