簡體   English   中英

輸入框之間的計算

[英]Calculations between input boxes

我正在編寫一個腳本,我需要在其中獲得兩次計算的總和並確定總報價。 問題是在將它們加在一起時我無法讓它們工作。 請記住,我是新手,代碼可能沒有完全優化,但我相信您會明白的。 對代碼的任何改進都非常受歡迎。

<div>
        <fieldset>
            <legend>Printing</legend>
        Number of color pages:<input type="text" id="color" placeholder="Color Pages" onchange="printing();" onchange = "binding();" />
        <input type="text" id="colorprice" readonly="readonly" /><br />
        Number of black and white pages:<input type="text" id="black" placeholder="Black and White Pages" onchange="printing();" onchange = "binding();" />
        <input type="text" id="blackprice" readonly="readyonly" /><br />
        Total Pages:<input type="text" id="pages_total" readonly="readonly" /> <input type="text" id="sum_pages" readonly="readonly" onchange = "suming();"/>
        </fieldset>

    </div>

<div>
        <fieldset>
            <legend>Binding</legend>
            Number of Hardbooks: <input type="text" id="books" placeholder="Number of Hardbooks" onchange="binding();" />
            <input type="text" id="books_price" readonly="readonly" /><br />
            Number of Softbacks: <input type="text" id="softback" placeholder="Number of Softbacks" onchange="binding();" />
            <input type="text" id="soft_price" readonly="readonly" /><br />
            Total Bindings: <input type="text" id="total_bindings" readonly="readonly" /><input type "text" id="total_price" readonly="readonly" />
        </fieldset>
    </div>

<p>Final quote:<input type="text" readonly="readonly" id="quote" /></p>

function printing() {
                var blackPrice;
                var colorPrice;
                var printBlack = new Array(0.10, 0.08, 0.06, 0.05);
                var printColor = new Array(0.40, 0.35, 0.30, 0.25);


                var colorPages = parseInt(document.getElementById("color").value);
                var blackPages = parseInt(document.getElementById("black").value);

                if (colorPages < 11) {
                colorPrice = colorPages * printColor[0];
                    }
                else if (colorPages >= 11 && colorPages < 51){
                colorPrice = colorPages * printColor[1];
                    }
                else if (colorPages >= 51 && colorPages < 101){
                    colorPrice = colorPages * printColor[2];
                    }
                else {
                    colorPrice = colorPages * printColor[3];
                    }



                if (blackPages < 11) {
                blackPrice = blackPages * printBlack[0];
                    }
                else if (blackPages >= 11 && colorPages < 51){
                blackPrice = blackPages * printBlack[1];
                    }
                else if (blackPages >= 51 && colorPages < 101){
                blackPrice = blackPages * printBlack[2];
                    }
                else {
                blackPrice = blackPages * printBlack[3];
                    }

                var pagesTotal = colorPages + blackPages;

                var printSum = blackPrice + colorPrice;


                document.getElementById("colorprice").value = "$" + colorPrice.toFixed(2);
                document.getElementById("blackprice").value = "$" + blackPrice.toFixed(2);
                document.getElementById("sum_pages").value = "$" + printSum.toFixed(2);
                document.getElementById("pages_total").value = pagesTotal;

                return printSum;

}



function binding(){

var softbackPrice;
var hardbookPrice;
var hardBooks = new Array(37.50, 23.50);
var softBacks = new Array(3.75, 4.00, 4.25, 4.50, 4.75, 5.00, 5.25);
var noBooks = parseInt(document.getElementById("books").value); 
var noSoftBacks = parseInt(document.getElementById("softback").value); 
var colorPages = parseInt(document.getElementById("color").value);
var blackPages = parseInt(document.getElementById("black").value);
var totalPages = colorPages + blackPages;

if (noBooks == 1) { 
    hardbookPrice = hardBooks[0];
    }
else {
        hardbookPrice = (hardBooks[1] * (noBooks - 1)) + hardBooks[0];
    }

if (totalPages <= 50) {
    softbackPrice = softBacks[0] * noSoftBacks;
    }
else if (totalPages > 50 && totalPages <= 100) {
    softbackPrice = softBacks[1] * noSoftBacks;
    }
else if (totalPages > 100 && totalPages <= 150) {
    softbackPrice = softBacks[1] * noSoftBacks;
    }
else if (totalPages > 150 && totalPages <=200) {
    softbackPrice = softBacks[2] * noSoftBacks;
    }
else if (totalPages > 200 && totalPages <= 250) {
    softbackPrice = softBacks[3] * noSoftBacks;
    }
else if (totalPages > 250 && totalPages <= 300) {
    softbackPrice = softBacks[4] * noSoftBacks;
    }
else if (totalPages > 300 && totalPages <= 350) {
    softbackPrice = softBacks[5] * noSoftBacks;
    }
else {
    softbackPrice = softBacks[6] * noSoftBacks;
}   



var totalPrice = softbackPrice + hardbookPrice;
var bindingsTotal = noSoftBacks + noBooks;


document.getElementById("books_price").value = "$" + hardbookPrice.toFixed(2);
document.getElementById("soft_price").value = "$" + softbackPrice.toFixed(2);
document.getElementById("total_bindings").value = bindingsTotal;
document.getElementById("total_price").value = "$" + totalPrice.toFixed(2);


return totalPrice;

}

function totalSum() {
var totalPrinting = printing();
var totalBinding = binding();
var subtotal = totalPrinting + totalBinding;
document.getElementIdBy("quote").value = subtotal;
}

它對我有用(大部分): http://jsfiddle.net/UHnRL/

第一個onchange計算存在問題,因為在執行parseInt之后,其他頁數為NaN 如果文本框為空,則應將其默認為零。

您可以使用isNaN [MDN] function 來解決計算問題:

var colorPages = parseInt(document.getElementById("color").value);
var blackPages = parseInt(document.getElementById("black").value);

if (isNaN(colorPages))
{
    colorPages = 0;
}

if (isNaN(blackPages))
{
    blackPages = 0;
}

這是工作解決方案。 http://jsfiddle.net/UHnRL/2/

=缺少以下標記中的類型

<input type "text" id="total_price" readonly="readonly" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM