在Javascript中删除日期硬编码的策略

时间:2014-04-02 19:50:19

标签: javascript html syntax

我想从jsp的以下部分中删除日期的硬编码:

    if ("1".equals(formFields.getValue("latefeesweek"))){
        formFields.mapDataToSession("latefeesdate","06/10/2013");
        formFields.mapDataToSession("latefeesdatedisplay","June 10, 2013 Prior to 8:00 A.M.(Central Time)");
    }else if ("2".equals(formFields.getValue("latefeesweek"))){
        formFields.mapDataToSession("latefeesdate","06/17/2013");
        formFields.mapDataToSession("latefeesdatedisplay","June 17, 2013 Prior to 8:00 A.M.(Central Time)");
    }else{
        formFields.mapDataToSession("latefeesdate","07/08/2013");
        formFields.mapDataToSession("latefeesdatedisplay","July 08, 2013 Prior to 8:00 A.M.(Central Time)");
    }

并替换为以下内容:

     if ("1".equals(formFields.getValue("latefeesweek"))){
        formFields.mapDataToSession("latefeesdate", week1);
        formFields.mapDataToSession("latefeesdatedisplay",week1display);
    }else if ("2".equals(formFields.getValue("latefeesweek"))){
        formFields.mapDataToSession("latefeesdate",week2);
        formFields.mapDataToSession("latefeesdatedisplay",week2display);
    }else{
        formFields.mapDataToSession("latefeesdate",week3);
        formFields.mapDataToSession("latefeesdatedisplay",week3display);
    }

我打算在属性文件(商店标准)中定义week1,week2,week3,week1display,week2display,week3display,并通过$ ff.week1在html中使用这些字段。

我正在寻找合适的语法。

感谢您的指导。

2 个答案:

答案 0 :(得分:0)

你可以创建一个var并将字符串保存在代码顶部

var week1display = dd/MM/yyyy
var week2display = dd/MM/yyyy
var week3display = dd/MM/yyyy

   if ("1".equals(formFields.getValue("latefeesweek"))){
        formFields.mapDataToSession("latefeesdate", week1);
        formFields.mapDataToSession("latefeesdatedisplay",week1display);
    }else if ("2".equals(formFields.getValue("latefeesweek"))){
        formFields.mapDataToSession("latefeesdate",week2);
        formFields.mapDataToSession("latefeesdatedisplay",week2display);
    }else{
        formFields.mapDataToSession("latefeesdate",week3);
        formFields.mapDataToSession("latefeesdatedisplay",week3display);
    }

或者你可以存储日期(如果你正在使用和排序文件持久性方法)

var x = new Date();

HERE是一个链接,提供有关比较Date()的信息。

希望这有帮助。

答案 1 :(得分:0)

根据The-Doctor的建议,使用var来保存它们就是解决方案。但是,您可以通过使用对象数组来进一步概括它。此解决方案允许您添加多个日期等...所以将来,您所要做的就是编辑日期列表。

您的软件现在可以支持3个以上的延迟通知

// Create our object
function LateFee(startWeekDate) {
  this.startOfWeek = startWeekDate;
}

// Define a method to convert the date to a string
LateFee.prototype.toString = function() {
  return [this.startOfWeek.getDate(),
          this.startOfWeek.getMonth(),
          this.startOfWeek.getFullYear()].join('/');
}

// Define a method to convert date to a notice
LateFee.prototype.notice = function() {
  var monthOfYear = ["January",  "February",  "March",  "April",  "May",  
                     "June",  "July",  "August",  "September",  "October",  
                     "November",  "December"];
  return [monthOfYear[this.startOfWeek.getMonth()], 
          this.startOfWeek.getDate(), 
          this.startOfWeek.getFullYear(),
          "Prior to 8:00 A.M. (Central Time)"].join(' ');
}

// List of late dates
var lateDates = [new LateFee(new Date(2014, 06, 05)),
                 new LateFee(new Date(2014, 06, 15)),
                 new LateFee(new Date(2014, 06, 20))];

// Current late date
var lateFeesWeek = parseInt(formFields.getValue("latefeesweek"), 10) - 1;

// Try to pick a late date from the list. 
// If the index doesn't exist, pick the last one.
var lateDate = lateDates[lateFeesWeek] || lateDates[lateDates.length - 1];

// Do the stuff you have to do.
formFields.mapDataToSession("latefeesdate", lateDate.toString());
formFields.mapDataToSession("latefeesdatedisplay", lateDate.notice());