2011-10-24 56 views
0

由于我对JavaScript不太擅长,我在这段代码中遇到了一些小问题。出于某种原因,我搞砸了语法,因为我使用的是Visual Studio 2010,所以没有真正的方法来调试JavaScript。我不确定我做错了什么,但是当我尝试在浏览器中启动这段代码时,它似乎只是继续加载,并没有真正完成。我想知道我的表情是否有问题,但是无论如何,我已经在这方面做了很多工作,并且开始让我感到沮丧。不允许页面加载的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

在firebug或Chrome开发工具中打开您的页面/代码,看看有哪些错误。如果你想在此之后获得一些帮助,你想把所有的代码放在http://jsfiddle.net/并在这里分享,这样人们就可以看一看现场实例。 –

+0

事情是这样的,它并没有发现任何错误:( – kellehbeans

回答

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); 
}); 
+0

谢谢你,抱歉,我花了很长时间回复,但你是对的,我也有其他人在我的公司看到它,发现这是问题。谢谢。:-) – kellehbeans

+0

没问题。很高兴有帮助。 –

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 = {