3 Stimmen

Lassen Sie JavaScript-Antworten in einem Textfeld berechnen, nicht in einem Pop-up!

Ich habe diesen Code in der HEAD:

<script LANGUAGE="JavaScript">
<!--
function calculate(form)

        {

                height = eval(form.height.value)
                width = eval(form.width.value)
                photos = eval(form.photos.value)
                lgtext = eval(form.lgtext.value)
                mountlam = eval(form.mount.value)
                mountlam = eval(form.lam.value)
                GetPriceOne (form, height, width, photos, lgtext, mount, lam) 

        }

        function GetPriceOne(form, height, width, photos, lgtext, mount, lam)

        {

                PriceOne = height * width
                GetPriceTwo(form, height, width, photos, lgtext, mount, lam, PriceOne)
        }

        function GetPriceTwo(form, height, width, photos, lgtext, mount, lam, PriceOne)

        {

                PriceTwo = PriceOne / 144
                GetPriceThree(form, height, width, photos, lgtext, mount, lam, PriceTwo)

        }

        function GetPriceThree(form, height, width, photos, lgtext, mount, lam, PriceTwo)

        {

                PriceThree = PriceTwo * 15
                GetPriceFour(form, height, width, photos, lgtext, mount, lam, PriceThree)

        }

        function GetPriceFour(form, height, width, photos, lgtext, mount, lam, PriceThree)

        {

                if(form.lgtext.checked)
                {
                        PriceFour = PriceThree + 20
                        GetPriceFive(form, height, width, photos, lgtext, mount, lam, PriceFour)
                }
                else
                {
                        PriceFour = PriceThree
                        GetPriceFive(form, height, width, photos, lgtext, mount, lam, PriceFour)
                }

        }

        function GetPriceFive(form, height, width, photos, lgtext, mount, lam, PriceFour)

        {

                if(form.mount.checked)
                {
                        PriceFive = PriceFour + PriceTwo * 5
                        GetPriceSix(form, height, width, photos, lgtext, mount, lam, PriceFive)
                }
                else
                {
                        PriceFive = PriceFour
                        GetPriceSix(form, height, width, photos, lgtext, mount, lam, PriceFive)
                }

        }

        function GetPriceSix(form, height, width, photos, lgtext, mount, lam, PriceFive)

        {

                if(form.lam.checked)
                {
                        PriceSix = PriceFive + PriceTwo * 5
                        GetPriceSeven(form, height, width, photos, lgtext, mount, lam, PriceSix)
                }
                else
                {
                        PriceSix = PriceFive
                        GetPriceSeven(form, height, width, photos, lgtext, mount, lam, PriceSix)
                }

        }

        function GetPriceSeven(form, height, width, photos, lgtext, mount, lam, PriceSix)

        {

        total = (photos * 4.95) + PriceSix
        WriteDocument(total)

        }

        function RoundToPennies(n)

        {

        pennies = n * 100;
        pennies = Math.round(pennies);
        strPennies = "" + pennies;
        len = strPennies.length;
        return strPennies.substring(0, len - 2) + "." + strPennies.substring(len - 2, len);

        }

        function WriteDocument(total)

        {

                alert("Estimated price of this collage is ONLY $" + RoundToPennies(total))
        }
//-->
</script>

Was muss ich an der Funktion ändern, wenn sie in dieses Textfeld eingegeben werden soll?

<INPUT TYPE = Text NAME = "collageEstimate" SIZE = 25 />
<input type="button" value="Calculate Estimate" name="B1" onclick="calculate(this.form)" />

Bitte um Hilfe! Ich bin schon seit Stunden damit beschäftigt und habe alles versucht, was ich weiß!!! Hier ist die aktuelle Seite, die jetzt mit dem Alert-Popup funktioniert: http://procollage.com/site10/pricing/photo-collage-pricing.html

3voto

nickf Punkte 517253

Was soll diese Zeile bewirken?

height = eval(form.height.value)

Wenn Sie versuchen, sie nur als Zahl zu lesen, dann tun Sie das:

height = parseFloat(form.height.value);

Wie auch immer, ändern Sie die Funktion WriteDocument wie folgt:

function WriteDocument(total) {
    document.yourFormName.collageEstimate.value = "Estimated price of this college "
                                           + "is ONLY $" + RoundToPennies(total);
}

Ihr HTML muss in etwa so aussehen:

<form name="yourFormName">
    <input type="text" name="collageEstimate" size="25" />
    <input type="button" value="Calculate Estimate" name="B1" onclick="calculate(this.form)" />
</form>

0voto

fastcodejava Punkte 37539

Sie können es versuchen:

document.getElementById('collageEstimate').value = yourvalue

EDIT: Wie ich sehe, haben Sie name=collageEstimate können Sie ändern in id=collageEstimate .

0voto

Christian C. Salvadó Punkte 763569

Ok, um den berechneten Wert in der Texteingabe anzuzeigen, sollten Sie einen Verweis darauf erhalten, zum Beispiel:

function WriteDocument(total) {
  document.forms['myForm'].elements['collageEstimate'].value = RoundToPennies(total);
}

Sie müssen lediglich die myForm mit dem Namen Ihres Formulars.

Aber abgesehen von Ihrer Hauptfrage habe ich noch ein paar Anmerkungen zu Ihrem Code:

  1. Sie brauchen nicht zu verwenden eval um einen String-Wert in eine Zahl umzuwandeln, können Sie einfach den unären Plus-Operator verwenden, den Number Konstruktor, der als Funktion aufgerufen wird, oder parseFloat :

    var height = +form.height.value; // or
    var height = Number(form.height.value); // or
    var height = parseFloat(form.height.value);
  2. Sie sollten Ihre Variablen mit dem var Anweisung, andernfalls werden sie, wenn sie im aktuellen Bereich nicht gefunden werden, zu weltweit Variablen. z.B.:

    //...
    var total = (photos * 4.95) + PriceSix;
  3. Ich würde Ihnen auch empfehlen, Semikolons bei Zuweisungen, Funktionsaufrufen und Rückgabeanweisungen zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X