2016-07-15 98 views
-2

我正在使用JS来计算窗体上的一些输入。我使用几个基于登录用户类型的IF语句以及他们输入到字段中的值。使用IF如果IF语句

总之,式结构如下:

IF登录的用户是管理员或贡献者,运行式1 否则,如果用户是订户运行式2.

谨现在添加第三条规则,例如,如果登录的用户是'客户',则运行速率3.

我面临的挑战是知道哪个IF语句适应新的变体以及它应该放在哪里,I假设,在第一个公式之后?

这是我到目前为止有:

(function(){ 
if(fieldname152=='administrator','contributor') return IF((fieldname130<=1000),(fieldname130)*50.40/1000,IF(fieldname130<=10000,(fieldname130)*50.40/1000,IF(fieldname130<=50000,(fieldname130)*50.90/1000,IF(fieldname130<=500000,(fieldname130)*50.45/1000)))); 
else if(fieldname152=='subscriber') return IF((fieldname130<=1000),(fieldname130)*49.40/1000,IF(fieldname130<=10000,(fieldname130)*49.40/1000,IF(fieldname130<=50000,(fieldname130)*48.90/1000,IF(fieldname130<=500000,(fieldname130)*48.45/1000)))); 
})() 

任何帮助将不胜感激。

小号

+1

这不是很可读,可你neaten了代码有点? –

+0

对不起,我anwered自己,它需要如下的问题: (函数(){ 如果(IN(fieldname152,[ '管理员', '贡献者'])){ /**的对于管理员和贡献者**代码/ } 如果(fieldname152 == 'role_a') { /**为role_a代码**/ } 如果(fieldname152 == 'role_b') {** role_b **/ }的代码} })() –

+0

本文可能会帮助您理解'if ... else'更好:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else – edmundo

回答

1

你会好得多拆分此代码,如下所示

function calculateValue(userType, value) 
{ 
    var multiplier = 0; 
    switch(userType) 
    { 
    case "administrator": 
    case "contributor": 
     if (value > 5000000) 
     { 
     multiplier = 50.45; 
     } else if (value > 50000) 
     { 
     multiplier = 50.9 
     } else if (value > 1000) 
     { 
     multiplier = 50.4 
     } 
     break; 
    case "user": 
     // Put your value calculations here 
     break; 
    default: 
     // This is for users other than admin, contrib or user 
     if (value > 5000000) 
     { 
     multiplier = 48.45; 
     } else if (value > 50000) 
     { 
     multiplier = 48.9; 
     } else if (value > 1000) 
     { 
     multiplier = 49.4; 
     } 
    } // end case 
    return value * (multiplier/1000); 

} 

然后就可以调用它,如下所示:

var fieldname152 = 'administrator'; 
var fieldname130 = 500; 

var result = calculateValue(fieldname152, fieldname130);