系统中的一个JSP文件,从数据库取出一张ArrayList表al,然后先判断al是否为null,然后再生成表。代码如下:<%
if (al!=null&&!alisEmpty){ %>
<table id='t0' border=1><tr>
.......生成单元格的代码
</tr></table><table id='t1' broder=1><tr>
。只有一行,就是上表数据统计的和
</tr></table> <script>
// t0.width=t1.offsetWidth; //0,在这里就会出错。
t1.width=t0.offsetWidth; //1,不会出错。
</script>
<% } %>t1表是t0表里面各列数据的和,因为t0要用js举行排序,所以t0和t1表必须分开。
因为t1表里面的数字长度比t0的长,所以我想当这两个表生成之后,再用js来,令t0表等于t1的offsetWidth。用就是说,让前面的表的宽度,等于后面的表的宽度。
但是,如果打开了浏览器设置“禁用脚本调试(其他)”,就会报JS异常,说是“参数异常”,然后问是否调试。如果选择不调试,两个表的宽度是不一样的。如果选择调试,然后退出调试的软件之后,第一个表t0的宽度,就会被等于第二个表t1的宽度。
我把js的程序行测试了一下,原来
1、让第二个表的宽度等于第一个表的宽度,就不会出错;
2、如果这两个表都是网页原来有的表,不是通过<% %>生成的表的话,也可以让前面的表的宽度,等于后面的表的宽度。
想到运行完调试程序之后,代码又能被执行,我又用try{}catch(){}进行测试。 try{
t0.width=t2.offsetWidth; t1.width=t2.offsetWidth; //2
}catch(e){
// alert(e); 必须要有这个try/catch,否则会报错。不能删除。
}
if (t0!=null && t1!=null && t2!=null){
t0.width=t2.offsetWidth; t1.width=t2.offsetWidth; //3
}alert(e)显示,是object Error,但到了3处,运行就通过了。
请问这是怎么回事呢?为何2处不能通过,3处又能通过呢?