首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript 多選擇框聯動與利息計算重構:模塊化數據驅動

     編輯:程式設計疑難解答

原始問題

代碼冗長、硬編碼利率、重復綁定 change 事件、NaN 錯誤。

重構要點

  1. 數據驅動:利率、期限配置集中到 o1 數組對象中,含 name(標識)、rate(利率)、days(天數)。
  2. 統一事件總線:所有輸入變化(下拉、文本框)觸發同一 calculate() 函數。
  3. 工具函數:getDays() 解析期限標識、calcTime() 計算到期日、gross_interest() 計算利息。
  4. 防抖/容錯:parseFloat(val) || 0 防 NaN,replace(/-/g, '/') 兼容日期格式。

核心代碼片段

function getDays() {
    var val = $("#sel2").find("option:selected").attr("name") || 'd0';
    var c1 = val.charAt(0), c2 = parseInt(val.charAt(1));
    return c1=='d'?c2 : c1=='m'?30*c2 : 365*c2;
}

function calculate() {
    var day = getDays();
    var input1 = parseFloat($("#input1").val()) || 0;
    var nl3 = parseFloat($("#nl3").val()) || 0;
    var nl4 = parseFloat($("#nl4").val()) || 0;
    var lj = nl4>0 ? input1*(day/360)*(nl4/100)*(nl3/100) : input1*(day/360)*(nl3/100);
    $("#lj").val(lj.toFixed(2));
    $("#lj1").val((input1+lj).toFixed(2));
    $("#lj2").val("0.00");
    calcTime();
}

// 所有輸入綁定 change 輸入事件觸發 calculate
$("#sel1,#sel2,#input1,#nl3,#nl4").on("change input", calculate);

效果

代碼從 300+ 行壓縮至 80 行,邏輯清晰、易維護、擴展新幣種/期限只需修改配置數組。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved