我对这段代码有点问题,因为我对JavaScript不是很了解。出于某种原因,我已经搞乱了语法,因为我使用的是Visual Studio 2010,所以没有办法调试JavaScript。我不确定我做错了什么,但当我尝试在浏览器中启动这段代码时,它似乎只是继续加载,并没有真正完成。我想知道我的表情是否有问题,但无论哪种方式,我已经在这方面工作了好几天,它开始让我感到沮丧。
任何答案都将受到高度赞赏。
var addAbsence = {
holDayCount: 0,
init: function () {
var deferrend = $.Deferred();
$("#addAbsence select[name=type]").change(function () {
switch ($(this).val()) {
case "0": case "1":
$("#addAbsence .borderWrap.type").animate({ "width": 266 }, 300, "swing", function () {
$("#addAbsence .borderWrap.tInfo").show();
});
$("#addAbsence .halfDays").show();
$("#addAbsence .lateArrivalTime").hide();
$("#addAbsence .paidHolidayCount").show();
break;
case "2":
$("#addAbsence .borderWrap.type").animate({ "width": 266 }, 300, "swing", function () {
$("#addAbsence .borderWrap.tInfo").show();
});
$("#addAbsence .halfDays").hide();
$("#addAbsence .paidHolidayCount").hide();
$("#addAbsence .lateArrivalTime").show();
break;
default:
$("#addAbsence .borderWrap.tInfo").hide();
$("#addAbsence .halfDays").hide();
$("#addAbsence .borderWrap.type").animate({ "width": 554 }, 300, "swing");
}
});
$("#addAbsence input.date").datepicker({
"dateFormat": "DD, d MM, yy",
onSelect: function () {
var dateFrom = Date.parse($("#addAbsence input[name=dateFrom]").val());
var dateTo = Date.parse($("#addAbsence input[name=dateTo]").val());
if (!isNaN(dateFrom) && !isNaN(dateTo)) {
var dates = addAbsence.getStartEndDate();
if ((dateFrom <= dateTo) &&
(dateFrom >= dates.dateFrom && dates.dateFrom <= dateTo) &&
(dateFrom <= dates.dateTo && dates.dateTo >= dateTo)) {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").removeClass("error");
if ($("#addAbsence select[name=type]").val() == "0") {
addAbsence.calcDayCount();
$("#addAbsence p.holUsing").html(addAbsence.holDayCount);
}
else {
$("#addAbsence p.holUsing").html("0");
}
}
else {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").addClass("error");
$("#addAbsence p.holUsing").html("--");
}
}
else {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").removeClass("error");
}
}
});
$("#addAbsence .addHalfDay").click(function () {
addAbsence.calcDayCount();
if ($("#addAbsence input[name=dateFrom]").val().length > 0 && $("#addAbsence input[name=dateTo]").val().length > 0 &&
Date.parse($("#addAbsence input[name=dateFrom]").val()) <= Date.parse($("#addAbsence input[name=dateTo]").val())) {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").removeClass("error");
if ($("#addAbsence tbody tr").size() < addAbsence.holDayCount) {
addAbsence.addHalfDay();
}
}
else {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").addClass("error");
$("#addAbsence select[name=type]").change();
)};
$("form#addAbsence").submit(function () {
var boolDate = $(this).find("input[name=dateFrom]").dateRangeValid($(this).find("input[name=dateTo]"));
var boolComments = $(this).find("textarea[name=comments]").lengthValid(0, 350);
var boolAbsenceType = $(this).find("select[name=type]").selectValid(1);
)};
答案 0 :(得分:0)
代码底部有两个嵌套错误。我不知道是不是这样。这是固定代码:
$("#addAbsence select[name=type]").change(function () {
switch ($(this).val()) {
case "0": case "1":
$("#addAbsence .borderWrap.type").animate({ "width": 266 }, 300, "swing", function () {
$("#addAbsence .borderWrap.tInfo").show();
});
$("#addAbsence .halfDays").show();
$("#addAbsence .lateArrivalTime").hide();
$("#addAbsence .paidHolidayCount").show();
break;
case "2":
$("#addAbsence .borderWrap.type").animate({ "width": 266 }, 300, "swing", function () {
$("#addAbsence .borderWrap.tInfo").show();
});
$("#addAbsence .halfDays").hide();
$("#addAbsence .paidHolidayCount").hide();
$("#addAbsence .lateArrivalTime").show();
break;
default:
$("#addAbsence .borderWrap.tInfo").hide();
$("#addAbsence .halfDays").hide();
$("#addAbsence .borderWrap.type").animate({ "width": 554 }, 300, "swing");
}
});
$("#addAbsence input.date").datepicker({
"dateFormat": "DD, d MM, yy",
onSelect: function () {
var dateFrom = Date.parse($("#addAbsence input[name=dateFrom]").val());
var dateTo = Date.parse($("#addAbsence input[name=dateTo]").val());
if (!isNaN(dateFrom) && !isNaN(dateTo)) {
var dates = addAbsence.getStartEndDate();
if ((dateFrom <= dateTo) &&
(dateFrom >= dates.dateFrom && dates.dateFrom <= dateTo) &&
(dateFrom <= dates.dateTo && dates.dateTo >= dateTo)) {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").removeClass("error");
if ($("#addAbsence select[name=type]").val() == "0") {
addAbsence.calcDayCount();
$("#addAbsence p.holUsing").html(addAbsence.holDayCount);
}
else {
$("#addAbsence p.holUsing").html("0");
}
}
else {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").addClass("error");
$("#addAbsence p.holUsing").html("--");
}
}
else {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").removeClass("error");
}
}
});
$("#addAbsence .addHalfDay").click(function () {
addAbsence.calcDayCount();
if ($("#addAbsence input[name=dateFrom]").val().length > 0 && $("#addAbsence input[name=dateTo]").val().length > 0 &&
Date.parse($("#addAbsence input[name=dateFrom]").val()) <= Date.parse($("#addAbsence input[name=dateTo]").val())) {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").removeClass("error");
if ($("#addAbsence tbody tr").size() < addAbsence.holDayCount) {
addAbsence.addHalfDay();
}
}
else {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").addClass("error");
}
$("#addAbsence select[name=type]").change();
});
$("form#addAbsence").submit(function () {
var boolDate = $(this).find("input[name=dateFrom]").dateRangeValid($(this).find("input[name=dateTo]"));
var boolComments = $(this).find("textarea[name=comments]").lengthValid(0, 350);
var boolAbsenceType = $(this).find("select[name=type]").selectValid(1);
});
答案 1 :(得分:0)
visual studio应该向您展示标记中的错误。
我使用的方法之一是删除几段代码并尝试运行。一旦你说了20-30行代码,那么找到这些错误会变得更容易。
但是在这种情况下我使用了jsLint http://www.jslint.com/
它提出了Problem at line 84 character 5: Expected an identifier and instead saw ')'.
然后使用记事本++的大括号匹配,看到$("#addAbsence .addHalfDay").click(function () {
包含一些错位的字符。
之后使用jslint发现了更多语法错误。在结尾处替换以下标记
//no errors before this
$("#addAbsence .addHalfDay").click(function () {
addAbsence.calcDayCount();
if ($("#addAbsence input[name=dateFrom]").val().length > 0 && $("#addAbsence input[name=dateTo]").val().length > 0 &&
Date.parse($("#addAbsence input[name=dateFrom]").val()) <= Date.parse($("#addAbsence input[name=dateTo]").val())) {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").removeClass("error");
if ($("#addAbsence tbody tr").size() < addAbsence.holDayCount) {
addAbsence.addHalfDay();
}
}
else {
$("#addAbsence input[name=dateFrom], #addAbsence input[name=dateTo]").addClass("error");
}
$("#addAbsence select[name=type]").change();
});
$("form#addAbsence").submit(function () {
var boolDate = $(this).find("input[name=dateFrom]").dateRangeValid($(this).find("input[name=dateTo]"));
var boolComments = $(this).find("textarea[name=comments]").lengthValid(0, 350);
var boolAbsenceType = $(this).find("select[name=type]").selectValid(1);
});
} //end of init: function ()
}; //end of addAbsence = {