Я нахожусь в процессе извлечения некоторого кода, который я написал для функции выбора таймфреймов, которая фильтрует результаты поиска на основе выбранного таймфрейма (последний месяц, последний квартал и последний год), скрывая все не относящиеся к делу результаты на основе когда они были созданы. Функция вызывается переменной GET, отправленной в форме submit ?time_frame_query=Last+Month
Теперь код работает, и это только начало. Однако я чувствую, что это может быть значительно улучшено, и, к сожалению, я исчерпал все варианты, пытаясь сделать это самостоятельно. Проблема, с которой я сталкиваюсь, заключается в том, что к тому времени, когда я пишу функции для фильтра «Прошлый год», мне приходится писать огромное количество кода, который, я считаю, не совсем необходим. Я поиграл с идеей поместить все переменные месяца в массив, а затем собрать определенную функцию «Последний месяц», «Последний квартал» и «Последний год», которая будет выполнять эту работу за меня. Но, опять же, учитывая мои текущие знания JS / jQuery, я просто не знаю, как это сделать.
Ниже приведен фрагмент кода, который, по моему мнению, имеет отношение к моему вопросу, а также помогает проиллюстрировать проблему, с которой я сталкиваюсь. Пожалуйста, дайте мне знать, если вам нужно больше.
РЕДАКТИРОВАТЬ: Благодаря Дагу весь рабочий код можно найти здесь: http://pastie.org/private/wl2qvnyar5xpibu4ot1lig
Любая помощь / совет будет принята с благодарностью.
var timezone = "Australia/ACT";
$.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?",
function(data){
var datetime = data.datetime
var date = datetime.split(" ")
var day = date[1]
var month = date[2]
var year = date[3]
var prevYear = year - 1
var jan = 'Jan'
//etc etc etc
var dec = 'Dec'
var timeFrame = $.getUrlVar('time_frame_query');
switch(timeFrame){
//****************************
// Begin Last Quarter function
//****************************
case 'Last+Quarter':
switch(month){
case 'Jan':
$('#searchResults div.'+oct+prevYear+',#searchResults div.'+nov+prevYear+',#searchResults div.'+dec+prevYear+',#searchResults div.'+jan+year).show();
break;
case 'Feb':
$('#searchResults div.'+nov+prevYear+',#searchResults div.'+dec+prevYear+',#searchResults div.'+jan+year+',#searchResults div.'+feb+year).show();
break;
case 'Mar':
$('#searchResults div.'+dec+prevYear+',#searchResults div.'+jan+year+',#searchResults div.'+feb+year+',#searchResults div.'+mar+year).show();
break;
case 'Apr':
$('#searchResults div.'+jan+year+',#searchResults div.'+feb+year+',#searchResults div.'+mar+year+',#searchResults div.'+apr+year).show();
break;
// etc etc etc
}
break;
Извинения за плохо отформатированный код выше, первая отправка на этот сайт. WYSIWYG FTL! (