对js文件编译执行顺序的认识

本文详细解析了一个在JS脚本中使用日期控件时遇到的“ReferenceError: J is not defined”的错误原因,并提供了正确的引入顺序解决方案。通过实例演示了如何避免此类错误,确保脚本的顺利执行。

    写完了一段js脚本,其中在/js/client/updateLogPage.js里面有对lhgcalendar.Js的引用,确认了这个日期控件所依赖的两个js文件

<script type="text/javascript" src="/js/lhgcore/lhgcore.min.js"></script>
<script type="text/javascript" src="/js/lhgcore/lhgcalendar.min.js"></script>

都在之后,很纳闷为何要报“ReferenceError: J is not defined”这个错误。

    原来我还没有走出C++和java等高级语言的编译执行流程的思维定势。原来js文件是逐个文件加载并执行的,前面引入的文件并不管后面引入的文件。我的引入顺序是这样的:

<head>
	<script type="text/javascript" src="/js/jquery-1.7.2.min.js"></script>
	<script type="text/javascript" src="/js/client/updateLogPage.js"></script>
	<script type="text/javascript" src="/js/lhgcore/lhgcore.min.js"></script>
	<script type="text/javascript" src="/js/lhgcore/lhgcalendar.min.js"></script>
	<script type="text/javascript" src="/js/highcharts.js"></script>
</head>

     我是在第二个文件里使用了第三个文件的方法:

J(function(){   
    J('#startDate').calendar({ maxDate:'%y-%M-%d',minDate:'2011-01-01',btnBar:false });
});     
J(function(){
    J('#endDate').calendar({ minDate:'#startTime',maxDate:'%y-%M-%d',btnBar:false  });
});
    程序加载了第二个文件后就开始执行这段脚本,J这个方法所在的js文件这个时候还没有加载进来,所以报错。学js就得用js的规则了。

    另外,用这个lhg这个控件的时候,lhgcore必须在lhgcalendar之前引入。不然调用calendar方法会出错。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bruce128

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值