我在JavaScript
中有一个switch语句,其中keyup事件处理程序不会将回调返回给我的变量(在这种情况下为var test)。
这是最后一例(110)无效。
这是代码。希望你能帮助我:
var getDateRange;
$(".nav-reports").append(
'<div id="daterange-container">' +
'<select id="daterange">' +
'<option value="0">Choose duration:</option>' +
'<option value="10">Today</option>' +
'<option value="20">Yesterday</option>' +
'<option value="30">This week</option>' +
'<option value="40">Last week</option>' +
'<option value="50">This month</option>' +
'<option value="60">Last month</option>' +
'<option value="70">This year</option>' +
'<option value="80">Last year</option>' +
'<option value="100">Everything</option>' +
'<option value="110">Last x days</option>' +
'</select>' +
'</div>'
);
getDateRange = function () {
var test;
var dateString = "yyyy-MM-dd";
var selectedOption = parseInt($('#daterange').change().val());
$('.daterange-input').detach();
switch (selectedOption) {
case 10: // works
break;
case 20: // works
break;
case 30: // works
break;
case 40: // works
break;
case 50: // works
break;
case 60: // works
break;
case 70: // works
break;
case 80: // works
break;
case 100: // works
break;
case 110: // doesnt't work
$('#daterange-container').append('<input class="daterange-input" type="text" maxlength="4">');
$('.daterange-input').keyup(function () {
test = '/' + Date.today().addDays(-parseInt($(this).val())).toString(dateString) + '/' + Date.today().toString(dateString);
});
break;
}
return test;
};
提前谢谢。
我在这里调用getDateRange函数:
$('.' + report.description).click(function () {
var dateRange = getDateRange();
// some more code not in relation
})
答案 0 :(得分:0)
呀。感谢@Bellian,我明白了。
在getDateRange之外定义测试并删除了返回测试语句。
现在我在分配var dateRange之前调用getDateRange。
以下是工作代码:
var test;
getDateRange = function () {
var dateString = "yyyy-MM-dd";
var selectedOption = parseInt($('#daterange').change().val());
$('.daterange-input').detach();
switch (selectedOption) {
case 110:
$('#daterange-container').append('<input class="daterange-input" type="text" maxlength="4">');
$('.daterange-input').keyup(function () {
test = '/' + Date.today().addDays(-parseInt($(this).val())).toString(dateString) + '/' + Date.today().toString(dateString);
});
break;
}
};
然后:
$('.' + report.description).click(function () {
getDateRange();
var dateRange = test;
});
感谢@Bellian和其他所有人。