Einfaches Javascript will nicht funktionieren...Need Help

  • Jop, hab den Link geklickt...
    Nur die Funktion funktioniert scheinbar nicht richtig, bzw. zählt nicht...

    Gebe mal eine Kette ein und lasse ein Buchstaben zählen, das geht nicht.

  • also bei mir funktioniert des...

    und edit: hier dann nochml das ganze in einem formular:


    habs so auch nochmal hochgeladen, der link ist also weiterhin mit der aktuellsten version gültig

  • nee komisch is des net.. ich hatte durch nen zufall immer den ersten buchstaben genommen und der hat den index 0 wenn der gewünschte buchstabe net gefunden wird is der index -1.. und darauf hatte ich net abgefragt.. und durch mein "falsches testen" hab ich den fehler nicht bemerkt!

    http://home.arcor.de/synaptic/hilfe/zeichen.html

    hier nochmal der link, jetzt komplett so wie es sein soll (mit formular und voll funktionierend)

  • Danke, das funzt nun so, wie ich es will!

    Habe aber nun ein weiteres Problem: Was muss ich denn nun ändern, wenn ich statt dem Zählen des Zeichens die Zeichenkette umkehren will?

    Sollte dann so aussehen:

    Zeichenkette: abcde

    Butten: "Kehre um"

    umgekehrte Zeichenkette: edcba


    Danke schonmal!

  • hab mal die gleiche datei genommen.. wollte nichts neues anlegen!!
    http://home.arcor.de/synaptic/hilfe/zeichen.html

  • DANKE!!!

    SUPER FORUM, SCHNELLE UND PERSÖNLICHE HILFE!

    So soll es sein, besser gehts nicht!!

  • Habe eine weitere Frage bzw. gleich zwei Probleme:

    1.
    Folgendes Script will nicht funktionieren...Fehler kann ich keinen finden (suche seit 1 Stunde):

    <html>
    <script language="JavaScript">
    <!--
    function umkehr()
    { var kette, lang, ausgabe, i;

    kette = formular.zeichenkette.value;

    lang=kette.length - 1;
    ausgabe = "";

    for (i = lang ; i >= lang ; i--)
    ausgabe = ausgabe + kette.charAt(i);

    formular.ausgabefeld.value = ausgabe;
    }
    //-->
    </script>

    <body>

    <h1>Zeichenkettenumkehrung</h1>

    <form name="formular">
    Bitte geben Sie Ihre Zeichenkette ein: <input type="text" name="zeichenkette">


    <input type="button" value="kehre um" onClick="umkehr()">


    Umkehrung: <input type="text" name="ausgabefeld">
    </form>
    </body>
    </html>


    -----------------------------------------------------------------------------------------


    2.
    Eine Aufgabe, die ich nicht hinbekomme und alle Lösungsansätze scheitern:

    Entwickelt werden soll eine Funktion [function palindrom()], die Zeichenketten auf Palindromeigeneschaft (also das Wort in umgekehrter Reihenfolge=Ausgangswort) überprüft und dann einen Alert "Palindrom" ausgibt.


    Dafür könnte man die oben genannte funktion übernehmen, müsste eben nur den "Alert-Check" mit reinbauen...Bekomme es aber irgendwie nicht hin, vielleicht auch, weil die funktion oben nicht geht...


    Danke schonmal für die Hilfe!

  • edit: du hättest dir mein script oben mal anehen sollen, da is ne umkehrfunktion dabei!

    gib mal ein beispiel für ein palindrom, damit ich was zum testen hab.. mir fällt grad keins ein

  • Ja, in dem oben geht es, aber ich wollte eins in meinem Script einbinden und verstehe nicht, wieso es nicht geht (sehr wichtig zu wissen, ob da ein Denkfehler oder irgendwas ist). Wäre also schön, wenn jemand den Fehler finden würde!

    Die bekanntesten Palindrome sind: Anna oder Otto
    Damit kannst du dann auch testen.

  • dann guck dir mal das hier an und versuch den unterschied festzustellen!

    das problem ist, daß du mit arrays arbeiten musst um eine umkehrung auf schnellstem wege zu erzeugen, dann musst du mit for-schleifen durch das array gehen um dort die einzelnen buchstaben auszulesen und dann wieder als wort zusammenzuführen.
    wenn du das gemacht hast kannste ganz einfach mit einer einzigen if-anweisung die eingegebenen worte mit deren umkehrung vergleichen.
    weil du ja nie weisst wie das wort eingegeben wurde musste das dann umwandeln in komplette kleinbuchstaben oder grossbuchstaben-
    denn Otto ist anders als ottO
    im script findest du ein String.toLowercase was dann aus Otto = otto macht und dementsprechend den vergleich durchführen kann, ohne daß die variable geändert werden muss


    http://home.arcor.de/synaptic/hilfe/palindrom.html

    edit2: so jetzt funktioniert es, hatte zwei klammern vergessen^^

  • Danke erstmal für deine Hilfe!

    Dein Script funzt natürlich perfekt, nur wieso funzt meins nicht? Das ist die Frage, die mich jetzt schon wieder seit Stunden beschäftigt...
    Lösungen finde ich im Internet genug, aber es geht ja auch mit einfachsten Mitteln, wie folgendes Script zeigt:

    <html>

    <script language="JavaScript">
    <!--
    function umkehr()
    { var kette, lang, ausgabe, i;

    kette = formular.zeichenkette.value;

    lang=kette.length - 1;
    ausgabe = "";

    for (i=lang; i >=0 ; i=i-1)
    ausgabe = ausgabe + kette.charAt(i);

    formular.ausgabefeld.value = ausgabe;
    }

    //-->
    </script>

    <body>

    <h1>Zeichenkettenz&auml;hler</h1>

    <form name="formular">
    Bitte geben Sie Ihre Zeichenkette ein!:
    <input type="text" name="zeichenkette">


    Welche Ziffer soll gez&auml;hlt werden?
    <input type="button" value="kehre um" onClick="umkehr()">
    <input type="text" name="ausgabefeld">


    </form>
    </body>
    </html>


    -------------------------------------------------------------

    Wie gesagt: Dieses Script funktioniert...


    Jetzt meins, was nicht funktioniert (trotzdem aber das selbe ist):

    <html>
    <script language="JavaScript">
    <!--
    function umkehr()
    { var kette, lang, ausgabe, i;

    kette = formular.zeichenkette.value;

    lang=kette.length - 1;
    ausgabe = "";

    for (i = lang ; i >= lang ; i--)
    ausgabe = ausgabe + kette.charAt(i) ;

    formular.ausgabefeld.value = ausgabe;
    }
    //-->
    </script>

    <body>

    <h1>Zeichenkettenumkehrung</h1>

    <form name="formular">
    Bitte geben Sie Ihre Zeichenkette ein: <input type="text" name="zeichenkette">


    <input type="button" value="kehre um" onClick="umkehr()">


    Umkehrung: <input type="text" name="ausgabefeld">
    </form>
    </body>
    </html>


    ---------------------------------------------------------------------------

    Jetzt meine Frage: Wieso funzt das obere, meins aber nicht?

  • Nachtrag: Wenn ich folgende If-Anweisung in das obere Script, das ja funktioniert, einbinde, bekomme ich keine Ausgabe bei einem Palindrom...

    Sähe dann so aus:

    <html>

    <script language="JavaScript">
    <!--
    function umkehr()
    { var kette, lang, ausgabe, i;

    kette = formular.zeichenkette.value;

    lang=kette.length - 1;
    ausgabe = "";

    for (i=lang; i >=0 ; i=i-1)
    ausgabe = ausgabe + kette.charAt(i);

    formular.ausgabefeld.value = ausgabe;

    if(ausgabe == zeichenkette){alert("Palindrom")};
    }

    //-->
    </script>

    <body>

    <h1>Zeichenkettenz&auml;hler</h1>

    <form name="formular">
    Bitte geben Sie Ihre Zeichenkette ein!:
    <input type="text" name="zeichenkette">


    Welche Ziffer soll gez&auml;hlt werden?
    <input type="button" value="kehre um" onClick="umkehr()">
    <input type="text" name="ausgabefeld">


    </form>
    </body>
    </html>

  • zuerst benutze bitte das bb-tag für codes ( der code-button ) des macht des leichter lesbar und deine beiden fehler finden sich wie folgt:

    im ersten script sagst du in der for-schleife folgendes:

    Zitat


    for (i = lang ; i >= lang ; i--)

    (hab hier mal absichtlich das zitat gewählt...)
    das heisst dann nimm die variable i, gib ihr den wert lang, solange i größer oder gleich 'lang' ist, ziehe von i eins ab und führe folgenden code aus.....
    is doch klar, daß des nich hinhaut und lediglich den letzten buchstaben zurückliefert!
    und damit mir sowas net passiert, nehm ich nen array und dreh das mit ner vorhanden methode um ;)

    im zweiten script von dir schreibste folgende if-anweisung:

    Zitat


    if(ausgabe == zeichenkette){alert("Palindrom")};

    Wo haste denn die variable "zeichenkette" in deinem script???
    ich kann se nirgendwo finden!!

    und gewöhn dir bitte auch an ein semikolon hinter die funkrion zu schreiben, wenn du sie in einem tag als onclick oder sowas hast.. das kann sonst auch zu fehlern führen

    also so ist es richtig:

    Code
    onclick="machwas();"
  • Aber bin wirklich dankbar für die Hilfe, die mir wohl einige weitere Stunden der Verzweiflung erspart :) KLASSE!

    Hab nun nochmal eine andere Variante probiert, funzt aber zu meinem Erstaunen nicht:

    Geht besonders um folgende Zeilen:

    Zitat


    for (i = lang ; i <= 0 ; i++)
    ausgabe = kette.charAt(i) + ausgabe;

  • du solltest so langsam echt mal überlegen, ob du das prinzip einer for-schleife verstanden hast....
    wie soll denn bei deinem oben genannten zitat was rumkommen?????

    für i gleich länge der zeichenkette-1 und so lange i kleiner oder gleich 0 ist, zähle i rauf und führe folgenden code aus....

    mach es mal so:

    Code
    for (i=0 ; i <= lang ; i++){
    ausgabe = kette.charAt(i) + ausgabe;
    }


    außerdem braucht html ein grundgerüst um vernünftig angezeigt zu werden... und was du hier ganz vergessen hast ist die klammer der for-schleife zu schliessen!

  • Das mit der for-Schleife werde ich mir in aller Ruhe am Wochenende nochmal anschauen, bringe da wohl einiges durcheinander...

    Die Klammer brauch man aber nicht zwingend setzen, funzt auch so, danke trotzdem für den Tipp und natürlich deine weitere Hilfe!