2010-02-03 5 views
3

J'ai ce code dans le HEAD:Avez-vous la réponse JavaScript calculer dans une zone de texte, pas une fenêtre pop-up!

<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> 

Si je veux qu'il aille dans cette zone de texte, qu'est-ce que je dois faire à la fonction?

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

Aidez-nous! J'ai été à cela pendant des heures et j'ai essayé tout ce que je sais !!! Voici la page réelle maintenant, en collaboration avec l'alerte-popup: http://procollage.com/site10/pricing/photo-collage-pricing.html

+0

Ne placez jamais d'espaces entre le nom de l'attribut et sa valeur. Ce n'est pas un code HTML valide. Et s'il vous plaît, choisissez un boîtier - ne passez pas entre ALL CAPS, tout en minuscules, et PascalCase. – zneak

+0

SinonKnownAsCamelCase – nickf

+0

merci pour cela –

Répondre

3

Qu'est-ce que cette ligne essaie de faire?

height = eval(form.height.value) 

Si vous êtes juste essayer de le lire comme un numéro, puis le faire:

height = parseFloat(form.height.value); 

Quoi qu'il en soit, changer la fonction WriteDocument à ceci:

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

Votre code HTML doit ressembler à ceci:

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

J'ai été concepteur graphique et web designer pendant un moment mais je suis nouveau sur javascript. Votre code ne fonctionne pas (je suis sûr que je néglige quelque chose de simple): http://procollage.com/site10/pricing/pricing1.html –

+0

GOT IT! Cela marche procollage.com/site10/pricing/pricing1.html –

0

Vous pouvez essayer:

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

EDIT: Je vois que vous avez name=collageEstimate, vous pouvez changer à id=collageEstimate.

+1

Essayé le vôtre aussi. Je sais que c'est moi qui oublie quelque chose. J'ai essayé SOOOOO beaucoup de choses bizarres dans les 10 dernières heures que je suis louche: http: /www.procollage.com/site10/pricing/pricing3.html –

+1

je vous remercie pour l'info –

0

Ok, pour montrer la valeur calculée sur la saisie de texte, vous devriez obtenir une référence, par exemple:

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

Il vous suffit de remplacer myForm avec le nom de votre formulaire.

Mais j'ai quelques commentaires sur votre code, de côté votre question principale:

  1. Vous n'avez pas besoin d'utiliser eval pour convertir une valeur de chaîne Number, vous pouvez simplement utiliser le plus unaire opérateur, le constructeur Number appelé en fonction, ou parseFloat:

    var height = +form.height.value; // or 
    var height = Number(form.height.value); // or 
    var height = parseFloat(form.height.value); 
    
  2. Vous devriez déclarer vos variables avec la déclaration var, sinon si elles ne se trouvent pas dans le courant sco pe, ils deviendront variables globales. .: par exemple

    //... 
    var total = (photos * 4.95) + PriceSix; 
    

  3. Je voudrais également vous recommandons d'utiliser des points-virgules sur les affectations, les appels de fonction, et le retour des déclarations.

+0

Merci pour votre réponse et si vite! J'ai été graphiste et concepteur de sites Web pendant un certain temps, mais je suis novice en javascript. Votre code ne fonctionne pas (je suis sûr que je néglige quelque chose de simple): http: /www.procollage.com/site10/pricing/pricing2.html Je veux aussi «nettoyer» le code et je vais essayer vos suggestions «var» dès que je reçois ce travail. –

+0

Merde ... je ne sais vraiment pas ce que je fais. Je DÉTESTE que je devrais demander qu'il soit complètement écrit. Ça me fait vraiment chier. –

Questions connexes