kostenloser Webspace werbefrei: lima-city


Mein kleines JavaScript will nicht

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    l***w

    Hallo,
    Ich möchte, dass mit Klick auf einen Link der Wert eines Inputs (Zahl) um 1 erhöht wird.
    Ich hab es so versucht:

    // <script type="..... und </script>, versteht sich
    function increase(attribute)
    {
    	document.register.strength.value = parseInt(document.register.strength.value);
    	document.register.strength.value = document.register.strength.value++;
    }
    // (Das Formular hei&#223;t register)
    
    // ... und weiter unten im HTMl-Teil
    <a href="javascript:increase('strength');">+</a><input type="text" name="strength">

    Wenn ich eine zahl eingeben und auf "+" klicke, passiert aber leider nix...
    Wieso funktioniert das Skript nicht?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage


  3. document.register.strength.value = ParseInt(document.register.strength.value);
    document.register.strength.value = document.register.strength.value++;

    Das ist logischer Bl&#246;dsinn. Denn parseInt() operiert nur auf Werten, nicht auf Objekten.

    Das hei&#223;t, du kannst zwar aus einem String o.&#228; einen Int machen, aber du kannst nicht ein Objekt oder eine Objekteigenschaft zu einem Int machen.
    (Um genau zu sein, wandelt parseInt() keine Variablen um sondern gibt eine neue int Variable zur&#252;ck. Und um diesen R&#252;ckgabewert n&#252;tzen zu k&#246;nnen, muss man den R&#252;ckgabewert in einer Variable speichern)

    Du kannst nur eine Objekteigenschaft auslesen und die ausgelesenen Daten in einen Int konvertieren.

    Die 2. Zeile ist zwar ne nette Idee, aber es funktioniert nicht (eine genaue Erkl&#228;rung w&#228;re zu aufwendig).

    Hier die L&#246;sung:
    document.register.strength.value=ParseInt(document.register.strength.value)+1;


    Beitrag geändert: 20.11.2007 21:04:17 von bladehunter
  4. Autor dieses Themas

    l***w

    Danke f&#252;r die schnelle Antwort.

    Funktioniert aber leider immer noch nicht.
    Ich hab mal in der Fehlerkonsole nachgeschaut, und da steht das hier:
    Fehler:
    ParseInt is not defined
  5. Merke: Standard-JS-Funktionen fangen _nie_ mit einem Gro&#223;buchstaben an.
  6. Autor dieses Themas

    l***w

    Thx, es klappt jetzt.
    Ich hab es jetzt versucht es so zu erweitern, dass das ganze mit einem Parameter geschieht:
    function increase(attribute)
    {
    	document.register.attribute.value=parseInt(document.register.attribute.value)+1;
    }

    Mir war irgendwie schon klar dass es nicht klappt, aber wie muss ichs machen?
  7. Du musst als Parameter ein Objekt &#252;bergeben, weil attribute ein Objekt ist.

    Und das ist eben kompliziert und sollte vermieden werden.

    Au&#223;erdem bezweifle ich, dass in dem Fall eine volle "Pfadangabe" noch legales js ist:
    document.register.attribute.value
    Den Fett gedruckten Teil m&#252;sstest du eigentlich weglassen.


    Aber ich schlage dir eine andere (leichter nachvollziehbare) L&#246;sung vor:

    function increase(attribute)
    {
    document.register.elements[attribute].value=parseInt(document.register.elements[attribute].value)+1;
    }

    Jedes Formular hat f&#252;r seine Unterlemenete das Array "elements". Und damit kannst du dann arbeiten.
  8. k**********k

    Oder einfach mit eval();

    Ist zwar unsch&#246;n m&#252;sste aber auch gehen.

    eval("document.register."+attribute+".value=parseInt(document.register."+attribute+".value)+1"
    );






    Beitrag geändert: 20.11.2007 22:19:51 von ketchupfleck

  9. Oder einfach mit eval();

    Ist zwar unsch&#246;n m&#252;sste aber auch gehen.


    eval() ist unprofessionell. Es hat zwar eine Daseinsberechtigung, aber man sollte es trotzdem vermeiden.
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!