![](/img/trans.png)
[英]Call javascript function from switch case in asp.net mvc
[英]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.