我有一个小的 javascript 定价计算,它不能在 friend 的 PC 上运行,但在我的 Mac 上运行良好。我猜这是一个分号或一些不在正确位置的小东西?如果可以的话请帮忙?!完整页面可以在@ http://procollage.com/pricing/photo-collage-pricing.html 找到。 .再次感谢大家。
这是脚本。
<script LANGUAGE="JavaScript">
<!--
function calculate(PricingForm)
{
height = eval(PricingForm.height.value);
width = eval(PricingForm.width.value);
photos = eval(PricingForm.photos.value);
lgtext = eval(PricingForm.lgtext.value);
mountlam = eval(PricingForm.mount.value);
mountlam = eval(PricingForm.lam.value);
GetPriceOne (PricingForm, height, width, photos, lgtext, mount, lam);
}
function GetPriceOne(PricingForm, height, width, photos, lgtext, mount, lam)
{
PriceOne = height * width;
GetPriceTwo(PricingForm, height, width, photos, lgtext, mount, lam, PriceOne);
}
function GetPriceTwo(PricingForm, height, width, photos, lgtext, mount, lam, PriceOne)
{
PriceTwo = PriceOne / 144;
GetPriceThree(PricingForm, height, width, photos, lgtext, mount, lam, PriceTwo);
}
function GetPriceThree(PricingForm, height, width, photos, lgtext, mount, lam, PriceTwo)
{
PriceThree = PriceTwo * 15;
GetPriceFour(PricingForm, height, width, photos, lgtext, mount, lam, PriceThree);
}
function GetPriceFour(PricingForm, height, width, photos, lgtext, mount, lam, PriceThree)
{
if(PricingForm.lgtext.checked)
{
PriceFour = PriceThree + 20;
GetPriceFive(PricingForm, height, width, photos, lgtext, mount, lam, PriceFour);
}
else
{
PriceFour = PriceThree;
GetPriceFive(PricingForm, height, width, photos, lgtext, mount, lam, PriceFour);
}
}
function GetPriceFive(PricingForm, height, width, photos, lgtext, mount, lam, PriceFour)
{
if(PricingForm.mount.checked)
{
PriceFive = PriceFour + PriceTwo * 5;
GetPriceSix(PricingForm, height, width, photos, lgtext, mount, lam, PriceFive);
}
else
{
PriceFive = PriceFour;
GetPriceSix(PricingForm, height, width, photos, lgtext, mount, lam, PriceFive);
}
}
function GetPriceSix(PricingForm, height, width, photos, lgtext, mount, lam, PriceFive)
{
if(PricingForm.lam.checked)
{
PriceSix = PriceFive + PriceTwo * 5;
GetPriceSeven(PricingForm, height, width, photos, lgtext, mount, lam, PriceSix);
}
else
{
PriceSix = PriceFive;
GetPriceSeven(PricingForm, height, width, photos, lgtext, mount, lam, PriceSix);
}
}
function GetPriceSeven(PricingForm, 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) {
document.PricingForm.collageEstimate.value = "$" + RoundToPennies(total);
}
//-->
</script>
最佳答案
呸!你到底为什么要在多个函数中倾倒?
GetPriceFive()
调用当时不存在的 PriceTwo。您要做的是完全 SCSS 的编程。这是一个全新的开始:
function calculate(PricingForm) {
height = PricingForm.height.value;
width = PricingForm.width.value;
photos = PricingForm.photos.value;
lgtext = PricingForm.lgtext.value;
mountlam = PricingForm.mount.value;
mountlam = PricingForm.lam.value;
price = GetPrice(PricingForm, height, width, photos, lgtext, mount, lam)
document.PricingForm.collageEstimate.value = "$" + RoundToPennies(price);
}
function GetPrice(PricingForm, height, width, photos, lgtext, mount, lam) {
price = height * width;
price = price / 144;
pricetwo = price; // for lookup later
price = price * 15;
price = price + (PricingForm.lgtext.checked) ? 20 : 0;
price = (PricingForm.mount.checked) ? price + pricetwo * 5 : price;
price = (PricingForm.lam.checked) ? price + pricetwo * 5 : price;
return (photos * 4.95) + price;
}
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);
}
这应该可以完成您的旧代码所做的事情(可能有一些疏忽),没有所有的废话......并且您可以持久引用第二个价格。
我放弃了写函数,因为它不需要。占用一行且只调用一次的函数不需要是函数。
关于javascript - 计算 Javascript 不适用于 PC,但适用于 Mac。有人可以指出错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2267826/