如何满足条件时完成功能?

时间:2016-06-07 02:02:11

标签: javascript function return

目前刚接触JS,并创建工资计算器,我有4个不同的条件可以满足,比如a1 a2 b1 b2,每个条件都有不同的工资率。当选择每小时工资率并输入工作小时数时,它只是将工作小时数乘以工资率,并在底部的文本框中留下感谢信息。我的问题是,函数不应该在它应该的条件下停止,它会进入最后一个if语句。假设a2是满足的条件,它将执行该条件,但它不会停止,并继续到最后一个if语句。我尝试在每个if语句的末尾添加一个返回代码,但这会阻止finish函数发布感谢消息。任何帮助,谢谢你。

var intName;
var intHours = 0,
  intQualifyType, intAgeType;
var curWage = 0;
var blnContinue;
var strMessage = "";
var intNumCalc = 0;
var curTotal = 0;


function calcWage() {
    intName = (document.getElementById('txtName').value);
    intQualifyType = (document.getElementById('optQualifyType').value);
    intAgeType = (document.getElementById('optAgeType').value);
    intHours = parseInt(document.getElementById('txtHours').value);

    if (intQualifyType == "Code1" || intAgeType == "Years2") {
      curWage = intHours * 1;
    }
    alert(curWage);

    if (intQualifyType == "Code1" || intAgeType == "Years1") {
      curWage = intHours * 2;
    }

    document.getElementById('txtTotal').value = "$" + curWage.toFixed(2);
    curWage = parseFloat(curWage);
    intNumCalc++;

    blnContinue = confirm("Do you have another quote to process");

    if (blnContinue) {
      clearall();
    } else {
      finishUp();
    }


  } //end of calwage

function clearall() {
    document.getElementById('txtName').value = "";
    document.getElementById('txtHours').value = "";
    document.getElementById('msgInvest').value = "";
    document.getElementById('txtTotal').value = "";
    document.getElementById('txtName').focus();

  } // end of clearall

function finishUp() {
    strMessage = "Thank you for using our new Wage Calculator " + intName + "! ";
    strMessage = strMessage + "For your hours this week you are currently owed $" + curWage.toFixed(2);
    document.getElementById('msgFinish').value = strMessage;
    intNumCalc = 0
    curTotal = 0;
  } //end of finishUp

2 个答案:

答案 0 :(得分:1)

我相信你的问题在这里:

SELECT TOP 20
    total_worker_time / execution_count AS Avg_CPU_Time,
    Execution_count,
    total_elapsed_time / execution_count AS AVG_Run_Time,
    total_elapsed_time,
    (SELECT
        SUBSTRING(text, statement_start_offset / 2 + 1, statement_end_offset)
    FROM sys.dm_exec_sql_text(sql_handle))
    AS Query_Text
FROM sys.dm_exec_query_stats
ORDER BY Avg_CPU_Time DESC

if(intQualifyType=="Code1" || intAgeType=="Years1")

当你使用"或"时,两者都将被运行。逻辑门。因此两个表达式都要求intQualifyType等于Code1。   我认为你所寻找的是"和"逻辑门之类的东西:

if(intQualifyType=="Code1" || intAgeType=="Years2") 

答案 1 :(得分:0)

@Dave Norm有一个观点,如果这是你想要做的功能。

此代码会为 TRUE 接受 TRUE 2 可能的 ANSWERS ,因为您正在使用 || < / strong> OR运算符。

if (intQualifyType == "Code1" || intAgeType == "Years2") {
 curWage = intHours * 1;
}

alert(curWage);

if (intQualifyType == "Code1" || intAgeType == "Years1") {
  curWage = intHours * 2;
}

我也是客人,您需要为您的流程使用&amp;&amp; AND运算符。

您可以合并 2 语句为 1 。像:

if(intQualifyType == "Code1" && intAgeType == "Years2") {
  curWage = intHours * 1;
}else if(intQualifyType == "Code1" && intAgeType == "Years1") {
  curWage = intHours * 2;
}

alert(curWage);

也许您需要添加:

return false;

如果您想在获得正确的条件后终止该过程。