Einfaches Javascript will nicht funktionieren...Need Help

  • Hallo!
    Ich sitze nun seit ca. zwei Stunden an einer einfachen Übung zum Javascript...Die Funktion sollte soweit stimmen und meiner Meinung nach auch der eigentliche HTML-Teil, allerdings komme ich bei einem Klick auf den Button "Zählen" nicht einmal in die Funktion selber rein.

    Hier der komplette Quelltext:

    <html>
    <script>
    function zeichen()
    { var kette, z, zaehler, laenge, anzahl;

    kette = formular.zeichenkette.value; alert(kette);
    z = formular.zeichen.value;
    laenge = kette.length -1; alert(laenge);
    anzahl = 0 ;

    for ( zaehler = 0 ; zaehler <= laenge ; zaehler++ )
    { alert(zaehler); alert(z); if (kette.charAt(zaehler) == z) anzahl = anzahl + 1; }

    alert ("In der Zeichenkette tritt das Zeichen " + z + " " + anzahl + "-mal auf.")

    }
    </script>
    <body>
    <form name="formular">
    Bitte Zeichenkette eingeben: <input type=text name="zeichenkette" size="30">


    Welches Zeichen soll gez&auml;hlt werden? <input type=text name="zeichen" size="3">


    <input type=button value="Z&auml;hlen" onclick="zeichen()">
    </form>
    </body>
    </html>


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

    Ich denke, dass der Fehler in folgenden beiden Zeilen liegt (wenn ich diese rausnehme, komme ich in die Funktion):

    Bitte Zeichenkette eingeben: <input type=text name="zeichenkette" size="30">


    Welches Zeichen soll gez&auml;hlt werden? <input type=text name="zeichen" size="3">


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

    Hoffentlich kann mir hier irgendjemand helfen, ich bin am verzweifeln.

    Danke schonmal im Voraus!

  • versuchs mal mit

    Code
    <script language="JavaScript">

    anschließend des ganze script-teil noch in einen head-tag packen

    Code
    <head><script language...>.....</script></head><body>....
  • Danke für die sehr schnelle Antwort!

    Leider bringen die von dir vorgeschlagenen Veränderungen nichts...Sind meiner Meinung nach auch nicht unbedingt nötig.

    Gibt es noch weiter Verbesserungsvorschläge?

  • lol du musst dem browser schon sagen, wie er das >script> interpretieren soll...!
    <script type="text/javascript">

    sollte da mindestens stehen!!

    und mach das mit den attributen mal komplett mit anführungszeichen!!!
    sollte evtl wat helfen

  • Habe es wie gefordert geändert, aber weiterhin das selbe Problem...

  • versuchs mal so

  • dann probiere es so:

    und nächstes mal bauste dein grundgerüst valide, also mit head-bereich!!!

  • Funktioniert doch nicht so, wie ich es mir vorstelle...
    Ich hätte gerne nach dem 1. Klick auf "Zählen" direkt die kompletten Buchstaben durchgezählt. Bei deiner Version muss man erst mehrmals drücken, bis alle Buchstaben durchgezählt sind (die unnötigen alerts hab ich schon rausgemacht). Was muss ich ändern, damit ich zu meiner gewünschen Fasssung komme?

    Und noch eine Frage: Habe durch rumprobieren herausbekommen, dass ich mit einem Formular hier nicht zu einem Ergebnis komme, die Funktion wird nicht einmal aufgerufen...Woran liegt das? Habe bisher immer ein Formular genutzt und das wundert mich jetzt doch etwas...

    Danke schonmal für die Hilfe!

  • Zitat von driver

    erstmal: welche version hast du genommen. die von synaptic oder von mir ?

    Da das Problem bei beiden Version auftritt, ist es erstmal egal welche Version. Ich würde die von dir, driver, bevorzugen, dabei der von Synaptic mir bisher unbekannte Sachen drin sind.

  • lol das script is deins, bis auf die tatsache, daß ich das unnötige formular drumherum weggelassen habe und die inputfelder via id angesprochen hab, statt des namens....

    ansonsten ist es komplett DEIN EIGENES SCRIPT
    mach dir mal gedanken, was du überhaupt mit dem ding machen willst!
    dann schreibste das hier und wenn du glück hast schreibe ich dann nen script was funktioniert und das macht, was es soll!

  • Ich will eine Funktion entwickeln, die die Häufigkeit des Auftretens eines einzugebenden Zeichens in einer einzugegebenden Zeichenkette zählt. Sie soll nach Klicken auf eine Schaltfläche aufgerufen werden.

    Jop, ist mein Script, was ich ja auch selbst geschrieben habe. Allerdings ist mir dieses Ansprechen per ID und soetwas ohne Formular eigentlich nicht bekannt, d.h. ich sollte es auch nicht unbedingt verwenden. Da kommt das von driver meinem Kenntnisstand schon näher, allerdings verstehe ich da nicht, wieso auf "onclick=" in dem Tag des Buttons verzichtet wird bzw. es nicht geht mit "onclick"?

    Danke schonmal für die Hilfe!

  • in drivers variante wird ein submit-button benutzt, dieser submitbutton schickt das formular an die in action angegebene adresse!
    dort ist der aufruf des javascript und smit braucht es dort keinen onclick-eventhandler.

    in meiner variante hole ich mir die elemente über ihre ID statt über das formular, hat den vorteil, daß ich die elemente irgendwo auf der homepage platzieren kann, ohne daß es eines formulars bedarf.
    deshalb habe ich ja uch nen onclick-handler im button

  • Danke für die Erklärung!

    Könnte man den Aufruf der Javascriptfunktion denn auch über "onclick" im Button-Tag integrieren? Wenn ich das bei drivers Variante ändere, funktioniert es nämlich nicht, was mich doch etwas wundert.

  • ein submitbutton hat soweit ich weiß das vorgeschriebene event "submit()"
    also dürfte es den onclick-handler im submitbutton nicht geben, habs aber bisher noch net ausprobiert, wenn jemand besser informiert ist, bitte ich um berichtigung!

    wenn du drivers variante abändern willst, müsstest du den submit-button duch nen normalen button austauschen..

    edit: hier mal nen funktionierender code!

    angucken kannste dir das ergebnis hier:
    http://home.arcor.de/synaptic/hilfe/zeichen.html

    bei Fragen kannste se ruhig stellen.

  • Wenn ich in drivers Variante statt dem submit-button einen Button setze und gleichzeitig "onclick="zeichen();" hinzufüge, komme ich erneut nicht in die Funktion, d.h. das Ganze funzt nicht mehr...Das wundert mich auch der Sache sehr...

  • habs grad mal getestet.. also mit dem von mir geänderten script innerhalb eines form-tags und drivers absende-variante...
    also wenn in der form-action die javascript-funktion steht, brauchste nen submit-button...
    ansonsten lass das form-tag wech und nimm nen normalen button.

    wieso willste des eigentlich so zwingen in ein formular quetschen?
    is doch nur simples javascript...... da wird nix verschickt, da is nix interaktives mit´m server... da wird nur gerechnet und ausgegeben...
    an sich könnte man den alert zur ausgabe auch wegmachen und dazu ne ausgabe direkt in der datei machen...
    ich bau des mal eben um, der link oben wird dann das ergebnis zeigen, ich denke mal ich muss dafür kein edit schreiben, denn es kommen ja eh nur drei zeilen dazu...

    im script:

    Code
    document.getElementById("ausgabe").innerHTML= "In der Zeichenkette tritt das Zeichen -" + z + "- insgesamt " + anzahl + " mal auf.";


    und im body:

    Code
    <span id="ausgabe"></span>
  • Danke erstmal für deine Mühe!

    Ich will es in einen Formular quetschen, da es an dieser Stelle zur Lerneinheit gehört (heißt: es muss zwingend ein Formular stehen).

    Der Code von dir funktioniert zwar an sich, rechnet aber falsch...Da steht im alert immer: "Das Zeichen "z" (z.b.) tritt 0-mal auf!" Also bleibt bei Null...