javascript - 计算 Javascript 不适用于 PC,但适用于 Mac。有人可以指出错误吗?

标签 javascript

我有一个小的 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/

相关文章:

javascript - 如何模拟用户在表单中输入

javascript - JQuery 淡出和内容替换

javascript - 面向对象的 JavaScript : Call method from inside of Callback Function

JavascriptclearInterval不会清除

javascript - Internet Explorer 不会重定向 ajax 响应

javascript - 如何使 div 元素可编辑(就像单击它时的文本区域一样)?

javascript - 在 onclick 事件上滑动隐藏的 div

javascript - PyQt (PySide)、WebKit 和从/向 Javascript 公开方法

javascript - jQuery Cycle 插件 pagerAnchorBuilder 图像变得未定义

javascript - 带有 ScrollMagic 引脚的网站