Rechner in Javascript - Problem

Hallo Leute,
in der Schule sollten wir heute einen Rechner erstellen, in den wir unsere gesamten gefahrenen Kilometer eintragen sollten und den gesamten Benzinverbrauch. Daraufhin soll uns die html-Seite einen Wert in einem „input type=„text“-Feld“ ausgeben. Normalerweise mache ich nicht viel mit Javascript, wusste aber mehr als mein Lehrer :smiley:… Das Problem in dem folgenden Quellcode ist, dass nichts im Textfeld ausgegeben wird, und weder mein Lehre noch ich wissen, wo der Fehler liegt. Wäre nett, wenn mir jemand den Fehler nennen könnte. Es ist glaube ich kein Großer.
Quellcode:

Berechner

function berechnen()
{
Ergebnis=(document.Rechner.kilometer.value)/(document.Rechner.verbrauch.value)*100;

}

Gefahrene Kilometer

Benzinverbrauch gesamt

Benzinverbrauch l/100km

Danke schonmal!

Hallo,

  • es gibt einen Namenskonflikt zwischen dem function-Namen und dem input-feld-Namen „berechnen“, so dass die function nicht erkannt wird.

  • Syntax ist: document.forms. Formularname. Elementname.value - richtig wäre also: document.forms.Rechner.kilometer.value
    Das gilt dann auch für die Zuweisung eines Wertes für ein Formularelement.

  • um mit der Zeichenkette aus einem input-Feld rechnen zu können, muss diese erst mit parseInt() oder parseFloat() in eine Zahl konvertiert werden

h♥rzlichen Gruß
Nitya

OK…Danke für die Antwort!

  1. Ich weiß nicht, wie ich diesen Nameskonflikt beheben kann… Ich habs schon mit anderen Namen probiert :smiley: ob das was bringt?
  2. „forms“ habe ich jetzt überall eingefügt.
  3. wie bekomme ich eine Zahl in eine parseInt() oder parseFloat() Variable konvertiert?

Hier mal der neue Quelltext, so wie ich jetzt deine Antwort interpretiert habe:

Berechner

function Re()
{
var km=document.forms.Rechner.kilometer.value;
var ver=document.forms.Rechner.verbrauch.value;
var er=km/ver*100;

}

Gefahrene Kilometer

Benzinverbrauch gesamt

Benzinverbrauch l/100km

Hallo,



Warum einem input-type-Reset überhaupt einen Namen vergeben?
Soll value hier auch mal geändert werden?


var km=document.forms.Rechner.kilometer.value;
//Zeichenkette in Ganzzahl
km = parseInt(km)

bei „Nachkomma“ (in JS ist es ein „.“)gerechnet werden soll, dann parseFloat() verwenden.

Warum wird/wurde mit onload eigentlich die function aufgerufen?

h♥rzlichen Gruß
Nitya

Es hat geklappt!!! SUPER Danke!

Hi kullerkeks,

o.k. es „klappt“.
Wie es umgesetzt wird??
Ich hätte es so gemacht:



Berechner
label{text-align:right; width:150px}
fieldset p{text-align:right}
fieldset{width:200px;border:2px outset black; margin-left:100px; padding:20px;background-color:silver}
input[type=„text“]{text-align:right}

function berechnen(){
var km=parseFloat(document.getElementById(‚kilometer‘).value.replace(/,/,"."))
var ltr=parseFloat(document.getElementById(‚verbrauch‘).value.replace(/,/,"."))
var erg=((Math.round(ltr/km*10000))/100).toString(10)
document.getElementById(‚Ergebnis‘).value=erg.replace(/./,",")
}


Gefahrene Kilometer:


Benzinverbrauch gesamt:


Benzinverbrauch auf 100 km:








h♥rzlichen Gruß
Nitya