前几天在网上看到一个用javascript给网页中的表格排序的js文件,拷了下来研究,现在有几个问题想请教一下:
1、我用MyEclipse对这个JS文件进行查看的时候,MyEclipse总是对for循环语句或者运行代码里面的++或--总是显示警告(is considered harmful),怎么回事呢?应该怎样写?页面文件中有这样几行代码:
<script>
var domok=document.all||document.getElementById //A
if (domok)
document.write('<SCRIPT SRC="sorttable.js"><\/SCRIPT>') //B
</script>
</head>
<body onload='if (domok) initTable("table0")'> //C
<table id="table0">......</table>
</body>
2、原文中AB两个语句的结尾都没有分号(;),请问javascript里面分号是否不是必须的?
3、A语句的意思是不是判断文档里面有没有“对象”或者“元素”?但domok怎么又可以变成“true”或者“fasle”的呢?但是,一个网页里面,又怎么会完全没有“对象”或者“元素”呢?
4、B语句的作用是不是相当于
<script type="text/javascript" language="javascript" src="sorttable.js"></script>
的作用?document.write的作用,是不是把整个sorttable.js文件写到(write)当前的网页文件?
5、“<\/SCRIPT>”里面的“\”是有什么用的?我原先以为是多余的代码,结果去掉后,运行就出错了。6、在<body>标签里面的onLoad和在网页文档结尾的window.onLoad,作用有什么不同?
因为我的项目里面有很多表格都是在后台根据某些条件生成(而且有可能不能生成),放在request里面送出页面的,所以页面上可能不一定有“table0”这个对象的。
因此我就想把上面的几行代码放到页面文件(.jsp)的最后面,也就是</body>和</html>之间。因为当页面代码编译到这里的时候,是否有“table0”这个对象已经是确定的了,然后我再执行“initTable("table0")”,这样就比较合理。
代码修改之后如下:
</body>
<% if (al!=null&&al.size()>0){ //al是一个在后台有条件生成的ArrayList,送出到页面后生成table %>
<script>
document.write('<SCRIPT SRC="/rcx/sorttable.js"><\/SCRIPT>');
window.onLoad=initTable("table0"); //D
</script>
<%} %>
</html>
但运行失败了,就算把语句D改为initTable("table0")也不行(不要前半部分window.onLoad=)。

解决方案 »

  1.   

    1.没有代码,不太清楚
    2.javascript里面分号不是必须的,但是建议加上。
    3.A语句的意思不是判断文档里面有没有“对象”或者“元素”,只是判断浏览器支持哪一个方法。由于domok是返回值,只要支持其中一种方法返回值便为true,都不支持即为false。
    4.B语句的作用相当于 
    <script type="text/javascript" language="javascript" src="sorttable.js"> </script> 
    的作用,只不过是动态插入的,因为如果domok为FALSE,就不会插入此代码段了。
    5.<\/SCRIPT>”里面的“\”可能是转义字符
    6.window.onLoad=initTable("table0");属于函数调用
    window.onLoad一般写引用。
      

  2.   

    首先非常感谢你回复我的问题。还有几个疑问:
    1、例如:for(var i=0;i<10;i++)
    MyEclipse就在++下面出现波浪线,提示harmful,不知道怎样改才不会harmful。而且,这种情况好像只出现在JS文件里面,在JSP和HTML文件里面的<script>里面是不会出现提示警告的。3、关于这个“对象或元素测试”的疑问,我自己后来试了一下,
    if (document.getElementById("dd"))
    alert(document.getElementById("dd")+"是有的。");
    else
    alert(document.getElementById("dd")+"没有");
    如果页面文件有dd这个对象,就会出现alert()的“[object]是有的。”,否则就会出现“null没有”。
    所以我估计在javascript中,if (document.getElementById("dd"))这类语句,就是判断网页中是否有某个对象或者元素的,如果有就当是“true”,否则如果是null就转化为“false ”。不知道我估计得对不对?