Microsoft JScript 运行时错误: 缺少对象,原因分析

      今天接到一个任务,原因是一个不知道的jsp页面,在点击关闭一个div面板时发生错误:

Microsoft JScript 运行时错误: 缺少对象,原因分析

      然后百度了一番,  是某处的JavaScript代码有问题,检查<head></head>中的script代码语法,一定是这里出了问题,是某个对象没有在这段代码中定义导致。

      将信将疑,仔细搜寻一番,最后果然发现了问题。是因为关闭div的方法没有添加进去。修改完毕,终于正确了。

    

      大概理了下思路,先定位错误的页面,然后定位错误发生的地方,看是什么操作引发的错误,然后一步步分析最终问题的所在。

 

 

=========================================== 

另外有一个疑惑,就是jsp中全局变量的声明问题。

使用jsp页面中<%! %>全局变量声明遇到的问题 

一般喜欢把页面里多处要用到的变量设置成全局变量,如: 

当把该变量赋值后,再次访问该页面时,该变量的值依然保存。这使得想通过用全局变量接受提交的参数时会受到一些迷惑: 

if(request.getParameter("operation")!=null) 
   ID = request.getParameter("operation").trim(); 


当ID在前一次赋过初值后,因为另一种原因而再次访问该页面但‘operation'参数为空时,本来希望ID也为空,但实际上ID的值为上次访问该页面时赋的值。当希望通过ID的值做不同的操作时可能引起操作类型的混乱。 

原因:使用<%! %>定义的变量编译成servlet后成为servlet的私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。而在<% %>中定义的变量编译成servlet后成为service()方法的一个本地变量,而service()方法中的本地变量只能每响应一次请求就重建一 
次。 

解决的办法是将ID用<% %>定义,或在判断ID的操作后重新对ID初始化。 

自己添加的内容为: 

<%! 
//设置全局变量 
int i=0; 
%> 
<% 
response.setHeader("refresh","1"); 
%> 
<h1><%=++i%></h1> 

该页面若编译成功后生成Servlet文件,全局变量i就会被所有客户的请求所共享,即客户端每进行一次请求,变量i就会加1。 

当修改了*.jsp文件后,再次在客户端进行访问,这时全局变量i就又从0开始变化了。 

全局变量和 page,request,session.application中的application变量类似。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xcl119xxcl

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

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

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

打赏作者

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

抵扣说明:

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

余额充值