2012-01-31 49 views
-4

這是我的代碼的更新版本。我只能在瀏覽器的控制檯中看到p //付費率和m //標記%的值,但它們並未顯示在窗體loandata的指定字段中。JavaScript計算

var b, p, m, pmp, pm, pb, fp, misc, wc, tax, sui, o, fp, misc, t; 
function calculate1(){ 
    wc = document.set.wc.value; // workers comp % 
    tax = document.set.tax.value; // taxes % 
    sui = document.set.sui.value; // sui % 
    o = document.set.o.value; // other expenses % 
    fp =document.set.fp.value; // fund and processing % 
    misc = document.set.misc.value; // Misc expenses % 
    pb = (wc+tax+sui+o)/100*b; // variable used to calculate profit margin 
    document.set.pb.value = pb; 
    t = document.set.t.value; // target profit margin % 
} 
function calculate() { 
    b = document.loandata.b.value; //bill rate 
    b = (b=="")?(((m*p)/ 100) + p):b; 
    p = document.loandata.p.value; //pay rate 
    m = document.loandata.m.value; // markup % 
    m = (m=="")?((b-p)/p* 100):m; 
    pm = (b-((pb*p)/100+(b*fp)/100+(b*misc)/100+p)); // profit margin calculation 
    pm = Math.round(pm).toFixed(2); 
    document.loandata.pm.value = pm; 
    pmp = pm/b*100; // profit margin % calc 
    pmp = Math.round(pmp).toFixed(2); // profit margin % 
    document.loandata.pmp.value = pmp; 
} 
+3

-1所有那些邪惡的,完全沒有意義'eval's的。 – 2012-01-31 23:20:10

+0

+1,@Kolink,指出濫用'eval's。無論如何,究竟是什麼?所有這些縮寫變量名稱,不明確的函數名稱,缺少註釋,嚴重缺乏分號,不接受參數而是自己獲取它們的函數,缺少var關鍵字,不必要的變量賦值等。你甚至沒有指出變量的含義,因爲你把它們稱爲模棱兩可的名字。 – 2012-01-31 23:27:41

+1

爲了清楚起見,Kolink說「eval」是不必要的,因爲對於所有其他計算,您可以說「wc = document.set.wc.value」等等。 @Tyler Crompton - 我同意你所說的一切 - 除了沒有分號:分號在JS中大多是可選的。我個人更喜歡一直使用它們,但是所顯示的代碼在沒有它們的情況下是完全有效的。 (雖然我猜我仍然同意,因爲代碼在幾個地方使用了它們,我認爲它應該是一致的:或者在必要時或者在所有時間使用它們,只要_...) – nnnnnn 2012-01-31 23:32:06

回答

0
m = (m==undefined)?(formula for m):m; 
p = (p==undefined)?(formula for p):p; 
+2

或者,也許我沒有足夠的'eval'在那裏... – 2012-01-31 23:31:21

+0

是否有一個特別的原因,你明確地檢查'm == undefined',而不是'm? (公式爲m):m'? – GregL 2012-01-31 23:47:51

+0

'm?'測試在JavaScript中'm'是* falsy * - 不一定*等於*'undefined'。請參閱http://11heavens.com/falsy-and-truthy-in-javascript - 「m」可能爲零。 – 2012-01-31 23:59:37