felix: onChange event

Hi zusammen.

Also ich habe folgendes Problem.
Ich benutze ein onChange Event im formular. Das funktioniert auch so im IE6. Nur leider geht das nicht unter Mozilla, Opera. Habe ich irgendwie was falsch definiert?

Als Fehler bringt mit der Mozilla Firefox folgendes:
Fehler: document.getElementById("add_k_1") has no properties
Der Witz dabei ist, das das so natürlich nicht geht wegen dem "add_k_1". Das muss 'add_k_1' heißen. Gucke ich jedoch in den Quellcode so steht das mit ' da.

Hier meine Definition:

<input type="text" onChange="document.getElementById('add_k_1').value=document.getElementById('add_b_1').value*190;" name="add_b_1" value="" style="width:90px;">

<input type="text" name="add_k_1" value="" style="width:90px;"></span><br>

Vielen Dank,

Felix

  1. Hi,

    Fehler: document.getElementById("add_k_1") has no properties

    <input type="text" onChange="document.getElementById('add_k_1').value=document.getElementById('add_b_1').value*190;" name="add_b_1" value="" style="width:90px;">
    <input type="text" name="add_k_1" value="" style="width:90px;"></span><br>

    Und wo ist jetzt da ein Element mit id="add_k_1"? Ich seh nur eines mit name="add_k_1".

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Und wo ist jetzt da ein Element mit id="add_k_1"? Ich seh nur eines mit name="add_k_1".

      Ähhh ... stimmt eigentlich. HAtte ich mir auch schon gedacht, nur wurde mir das weiter unten im Forum empfohlen, dass ich das mit getElementById nehmen soll. Das hatte ja auch unter IE gefunzt.

      Jetzt habe ich das so hinbekommen:

      <input type="text" onChange="document.getElementsByName('add_k_1')[0].value=document.getElementsByName('add_b_1')[0].value*190;" name="add_b_1" value=""><input type="text" name="add_k_1" value="">

      Vielen Dank für den hinweis.

      Grüße, Felix

      1. Hallo,

        Jetzt habe ich das so hinbekommen:

        <input type="text" onChange="document.getElementsByName('add_k_1')[0].value=document.getElementsByName('add_b_1')[0].value*190;" name="add_b_1" value=""><input type="text" name="add_k_1" value="">

        In einem Formular kann man sich die Element-Referenzierung per document.getElement... sparen. Es gibt die forms-Collection http://de.selfhtml.org/javascript/objekte/forms.htm von der aus kann man das Formular erreichen. Das Formular hat eine elements-Collection http://de.selfhtml.org/javascript/objekte/elements.htm von der aus kann man einzelne Elemente über ihren Namen erreichen. Ein Element kann über die Eigenschaft form http://de.selfhtml.org/javascript/objekte/elements.htm#form auf das Formular zurückgreifen, in dem es liegt.

        Wenn Dein INPUT-Element mit dem Namen "add_k_1" bereits ein Element im selben Formular ist, wie Dein INPUT-Element mit dem Namen "add_b_1", dann:
        <input type="text" onchange="this.form.elements['add_k_1'].value=parseInt(this.value, 10)*190;" name="add_b_1" value=""><input type="text" name="add_k_1" value="">

        Zu der Bezugnahme auf das aktuelle Objekt mit this: http://de.selfhtml.org/javascript/sprache/objekte.htm#this

        Zu parseInt() http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int

        viele Grüße

        Axel