簡體   English   中英

Javascript / jQuery-如何調用切換案例以從另一個函數執行

[英]Javascript/jQuery - how to call a switch case to execute from another function

我想知道是否可以從另一個函數中調用一個開關案例。 在我的頁面上,用戶可以選擇帶有元素$("#timeInterval")預定義時間間隔,並且選項之一是從datepicker中選擇日期,默認情況下該日期不可見。 基於這些日期,我正在創建圖表。 由於在選擇元素上也沒有可用的圖表,因此我需要確保它們獲得正確的日期,無論是選擇選項還是日期選擇器。 我現在的問題是,我需要檢查日期選擇器是否可見,我可以從中獲取日期,否則,我應該獲取所選的選項並針對該情況執行帶有日期的功能。

這是我的代碼:

$("#timeInterval").change(function() {

    var date = moment().format("YYYY-MM-DD");
    var yesterday = moment().subtract(1, 'day').format('YYYY-MM-DD');
    var tomorrow = moment().add(1, 'day').format('YYYY-MM-DD');
    var sevenDaysAgo = moment().subtract(7, 'day').format('YYYY-MM-DD');
    var thirtyDaysAgo = moment().subtract(29, 'day').format('YYYY-MM-DD');
    var lastWeekStart = moment(date).weekday(-6).format('YYYY-MM-DD');
    var lastWeekEnd = moment(date).weekday(1).format('YYYY-MM-DD');
    var thisWeekStart = moment(date).weekday(1).format('YYYY-MM-DD');
    var startOfMonth = moment().startOf('month').format('YYYY-MM-DD');
    var startOfLastMonth = moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD');
    var endOfLastMonth = moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD');

    switch($("#timeInterval").val()) {
      case "allTime":
        $(".datePickers").hide();
        timelines(0, 0);
        barCharts(0, 0);
        $( "#list" ).empty();
        mostArticles(0, 0);
        break;
      case "today":
        $(".datePickers").hide();
        timelines(date, tomorrow);
        barCharts(date, tomorrow);
        $( "#list" ).empty();
        mostArticles(date, tomorrow);
        break;
      case "yesterday":
        $(".datePickers").hide();
        timelines(yesterday, date);
        barCharts(yesterday, date);
        $( "#list" ).empty();
        mostArticles(yesterday, date);
        break;
      case "lastSevenDays":
        $(".datePickers").hide();
        timelines(sevenDaysAgo, date);
        barCharts(sevenDaysAgo, date);
        $( "#list" ).empty();
        mostArticles(sevenDaysAgo, date);
        break;
      case "lastThirtyDays":
        $(".datePickers").hide();
        timelines(thirtyDaysAgo, tomorrow);
        barCharts(thirtyDaysAgo, tomorrow);
        $( "#list" ).empty();
        mostArticles(thirtyDaysAgo, tomorrow);
        break;
      case "thisWeek":
        $(".datePickers").hide();
        timelines(thisWeekStart, tomorrow);
        barCharts(thisWeekStart, tomorrow);
        $( "#list" ).empty();
        mostArticles(thisWeekStart, tomorrow);
        break;
      case "lastWeek":
        $(".datePickers").hide();
        timelines(lastWeekStart, lastWeekEnd);
        barCharts(lastWeekStart, lastWeekEnd);
        $( "#list" ).empty();
        mostArticles(lastWeekStart, lastWeekEnd);
        break;
      case "thisMonth":
        $(".datePickers").hide();
        timelines(startOfMonth, date);
        barCharts(startOfMonth, date);
        $( "#list" ).empty();
        mostArticles(startOfMonth, date);
        break;
      case "lastMonth":
        $(".datePickers").hide();
        timelines(startOfLastMonth, endOfLastMonth);
        barCharts(startOfLastMonth, endOfLastMonth);
        $( "#list" ).empty();
        mostArticles(startOfLastMonth, endOfLastMonth);
        break;
      default:
        $(".datePickers").show();
      }
  });

$('#datePicker').fdatepicker({
        closeButton: false,
    initialDate: weekBack,
        format: 'dd.mm.yyyy',
    endDate: dayBack,
    }).on('changeDate', function (ev) {
      var dateFrom = $("#datePicker").val().split(".").reverse().join("-");
      var dateTo = $("#datePicker1").val().split(".").reverse().join("-");
        timelines(dateFrom, dateTo);
      barCharts(dateFrom, dateTo);
      $( "#list" ).empty();
      mostArticles(dateFrom, dateTo);
  });

  $('#datePicker1').fdatepicker({
        closeButton: false,
    initialDate: date,
        format: 'dd.mm.yyyy',
    endDate: date,
    }).on('changeDate', function (ev) {
    var dateFrom = $("#datePicker").val().split(".").reverse().join("-");
    var dateTo = $("#datePicker1").val().split(".").reverse().join("-");
    timelines(dateFrom, dateTo);
    barCharts(dateFrom, dateTo);
    $( "#list" ).empty();
    mostArticles(dateFrom, dateTo);
  });

  //timeline charts
  $("#timelines").on("change", function() {
    if ($("#datePicker").is(":visible")){
      var dateFrom = $("#datePicker").val().split(".").reverse().join("-");
      var dateTo = $("#datePicker1").val().split(".").reverse().join("-");
    }
    else{
      console.log($( "#timeInterval" ).val());

    }
    timelines(dateFrom, dateTo);
  }).trigger("change");

是的,它有可能。 將您的開關置於功能中; 稱之為DoTimeIntervalWork之類的東西。 在該函數中,您可以執行所需的操作。 確保傳遞或以其他方式訪問$("#timeInterval").val() ,以使其正常工作。 重要的是您對timelines(yesterday, date);調用timelines(yesterday, date); barCharts(yesterday, date); 和其他函數調用在函數內部可用。 如果不是,則可以讓您的開關返回一個函數對象,然后由DoTimeIntervalWork的調用方調用該對象。

$("#timeInterval").change(function() {

var date = moment().format("YYYY-MM-DD");
var yesterday = moment().subtract(1, 'day').format('YYYY-MM-DD');
var tomorrow = moment().add(1, 'day').format('YYYY-MM-DD');
var sevenDaysAgo = moment().subtract(7, 'day').format('YYYY-MM-DD');
var thirtyDaysAgo = moment().subtract(29, 'day').format('YYYY-MM-DD');
var lastWeekStart = moment(date).weekday(-6).format('YYYY-MM-DD');
var lastWeekEnd = moment(date).weekday(1).format('YYYY-MM-DD');
var thisWeekStart = moment(date).weekday(1).format('YYYY-MM-DD');
var startOfMonth = moment().startOf('month').format('YYYY-MM-DD');
var startOfLastMonth = moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD');
var endOfLastMonth = moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD');

DoTimeIntervalWork($("#timeInterval").val())
  });

$('#datePicker').fdatepicker({
    closeButton: false,
initialDate: weekBack,
    format: 'dd.mm.yyyy',
endDate: dayBack,
}).on('changeDate', function (ev) {
  var dateFrom = $("#datePicker").val().split(".").reverse().join("-");
  var dateTo = $("#datePicker1").val().split(".").reverse().join("-");
    timelines(dateFrom, dateTo);
  barCharts(dateFrom, dateTo);
  $( "#list" ).empty();
  mostArticles(dateFrom, dateTo);
});

  $('#datePicker1').fdatepicker({
    closeButton: false,
initialDate: date,
    format: 'dd.mm.yyyy',
endDate: date,
}).on('changeDate', function (ev) {
var dateFrom = $("#datePicker").val().split(".").reverse().join("-");
var dateTo = $("#datePicker1").val().split(".").reverse().join("-");
timelines(dateFrom, dateTo);
barCharts(dateFrom, dateTo);
$( "#list" ).empty();
mostArticles(dateFrom, dateTo);
  });

//timeline charts
$("#timelines").on("change", function() {
 if ($("#datePicker").is(":visible")){
   var dateFrom = $("#datePicker").val().split(".").reverse().join("-");
   var dateTo = $("#datePicker1").val().split(".").reverse().join("-");
 }
 else{
     console.log($( "#timeInterval" ).val());

   }
   timelines(dateFrom, dateTo);
  }).trigger("change");

function DoTimeIntervalWork(timeInterval){
 switch(timeInterval) {
  case "allTime":
    $(".datePickers").hide();
    timelines(0, 0);
    barCharts(0, 0);
    $( "#list" ).empty();
    mostArticles(0, 0);
    break;
  case "today":
    $(".datePickers").hide();
    timelines(date, tomorrow);
    barCharts(date, tomorrow);
    $( "#list" ).empty();
    mostArticles(date, tomorrow);
    break;
  case "yesterday":
    $(".datePickers").hide();
    timelines(yesterday, date);
    barCharts(yesterday, date);
    $( "#list" ).empty();
    mostArticles(yesterday, date);
    break;
  case "lastSevenDays":
    $(".datePickers").hide();
    timelines(sevenDaysAgo, date);
    barCharts(sevenDaysAgo, date);
    $( "#list" ).empty();
    mostArticles(sevenDaysAgo, date);
    break;
  case "lastThirtyDays":
    $(".datePickers").hide();
    timelines(thirtyDaysAgo, tomorrow);
    barCharts(thirtyDaysAgo, tomorrow);
    $( "#list" ).empty();
    mostArticles(thirtyDaysAgo, tomorrow);
    break;
  case "thisWeek":
    $(".datePickers").hide();
    timelines(thisWeekStart, tomorrow);
    barCharts(thisWeekStart, tomorrow);
    $( "#list" ).empty();
    mostArticles(thisWeekStart, tomorrow);
    break;
  case "lastWeek":
    $(".datePickers").hide();
    timelines(lastWeekStart, lastWeekEnd);
    barCharts(lastWeekStart, lastWeekEnd);
    $( "#list" ).empty();
    mostArticles(lastWeekStart, lastWeekEnd);
    break;
  case "thisMonth":
    $(".datePickers").hide();
    timelines(startOfMonth, date);
    barCharts(startOfMonth, date);
    $( "#list" ).empty();
    mostArticles(startOfMonth, date);
    break;
  case "lastMonth":
    $(".datePickers").hide();
    timelines(startOfLastMonth, endOfLastMonth);
    barCharts(startOfLastMonth, endOfLastMonth);
    $( "#list" ).empty();
    mostArticles(startOfLastMonth, endOfLastMonth);
    break;
  default:
    $(".datePickers").show();
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM