js,从来不想碰也不愿去学,但这只是一厢情愿,一个完整的WEB项目里怎么能少得了呢?现在AJAX如日中天,想不去碰都不行了。
这不项目中遇到难以处理的问题了,还要考虑性能啊,呵呵JS的使用是再自然不过了。用过一段时间后,细数其实用的功能,竟然多不胜数。印象较深的有:提供动态增删控件(文本框、按钮等),无刷新改变页面控件里的值,无处不在的事件机制,还有更绝的就是自己跑去访问数据库了,这下倒好了,有了这张王牌,JS简直无所不能,做出了像以前桌面系统那样牛的应用来了,用户体验度增加了,赞美声一片。于是开发人员获得了成就感,更不可收拾了。
重点回忆一下用JS访问数据库后获得了哪些好处:之前的WEB界面从来都是按步就班,毫无新意,那千篇一律的界面,去哪个网页上也是如此,不过早已习惯了。于是一个WEB应用变成简单公式叠加:先找个可用的数据库,最好支持分布式的如ORACLE,SYBASE等,让数据存放在多台服务器;再搭建一个灵活稳定的程序框架,首选J2EE,目前流行的J2EE框架有SPRING+STRUTS+HIBERNATE+WEB界面;在这个框架里我们就可以写数据库增删改语句了,HIBERNATE在这方面倒是帮了大忙,干活省心了许多,在对数据库操作方面还经常可以面向对象一把。不信啊,回想一下JDBC时代那个痛苦就能体会到了;框架搭好了就开始真正干活了,前台的杂事可不少,调用数据库接口,将数据显示到WEB控件里,验证数据和保证数据的正确性成了一大麻烦事。完成这些后基本功能就算OK了。不过还不算完,JS还没大出场啊,光用STRUTS框架来验证数据哪行呢,服务器受不了,这与硬件的发展有关,前几年的CPU、内存突飞猛进,让人们看到无限窄取服务器性能的可能,于是不管事无巨细都找服务器要性能,STRUTS就是这方面的代表,一个验证也要交给服务器来做,然而这两年CPU发展遇到了瓶颈,再找服务器要性能的趋势好像不太明朗了。JS在这个最需要的时候再次横空出世。很多任务再次交给了JS,能在客户端完成的事坚决不给服务器加压力。像验证和与数据库交互。AJAX是多么好的一个东东啊,简直就是敌人堡垒里的特洛伊,什么事都可以叫它做了。而且可以完成许多出神入化的功能,比如以前只有桌面系统里才能看到的动态拖拽,用服务器保持中间状态,JS反复提交数据修改数据,不刷新页面而与服务器交互就达到了一个动态效果。要知道用户才是上帝,用户觉得好用易用了才是真理。照这么发展下去,不用多久就会产生一套与STRUTS类似的JS框架,直接扔到客户端去,相当于远程安装了一个客户端。实现更加便利的交互应用。等着吧,应该有人在开发这样的工具了。
而我这样的菜鸟级代码人员就享用人家做好现成的东西就OK了。当然没事也可以想点创意,没准哪一天自己也能开发一套XX框架来。呵呵希望有那么一天。
附:js学习录
------1
这两条语句就能动态改变一个名为(sysSqlPartConditions.type)下拉框的首选项,EASY
var types = document.getElementById("sysSqlPartConditions.type");
types.selectedIndex =2
------2
STRTUS + AJAX访问数据库流程: A,响应事件,onclick,onchange; B,传参给脚本,如果不传参的话,可以在脚本里利用document.getElementById(),document.all.名字,document.forms[i],等手段获得控件里的值; C,拼成URL,记得要给这个流程添加一个ACTION,跳到其它页面也行,或是百度,GOOGLE上也行; D,调用方法send_request(url),这个方法里做了几件事:初始化XMLHttpRequest对象(考虑不同浏览器),调用processRequest()方法,http_request.readyState == 4//判断对象状态, http_request.status == 200) // 信息已经成功返回,开始处理信息,数据库已经响应,http_request.open("GET", url, true);//可以设同步或异步,http_request.send(null); E,如果状态为200,则可以设置更新后的数据了,通常是自己写个setdata(http_request.responseText)方法,这里只管调用就行。setdata(http_request.responseText)方法可以灵活控制,即可改变某个文本框,也可改变整个下拉框,是多个控件。 F,完工,总结一下,总体结构就是这样,有两处需要应用时指定的变化,其一:URL需要指定,其二:SETDATA方法需要自己灵活控制。其它流程完全相同。
------3
js,java代码,struts标签,request里的值等,它们之间的传递规则(暂未总结):
------4
------5
------6
转自网友已总结好的“ JS关键字 ”
js关键字
-----------------------------------------------------------------------------------------------------------
1.document.write(""); 输出语句
2.JS中的注释为//
3.传统的HTML文档顺序是:document->html->(head,body)
4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)
5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value)
6.一个小写转大写的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase();
7.JS中的值类型:String,Number,Boolean,Null,Object,Function
8.JS中的字符型转换成数值型:parseInt(),parseFloat()
9.JS中的数字转换成字符型:(""+变量)
10.JS中的取字符串长度是:(length)
11.JS中的字符与字符相连接使用+号.
12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<=
13.JS中声明变量使用:var来进行声明
14.JS中的判断语句结构:if(condition){}else{}
15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop}
16.循环中止的命令是:break
17.JS中的函数定义:function functionName([parameter],...){statement[s]}
18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替.
19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self
20.状态栏的设置:window.status="字符";
21.弹出提示信息:window.alert("字符");
22.弹出确认框:window.confirm();
23.弹出输入提示框:window.prompt();
24.指定当前显示链接的位置:window.location.href="URL"
25.取出窗体中的所有表单的数量:document.forms.length
26.关闭文档的输出流:document.close();
27.字符串追加连接符:+=
28.创建一个文档元素:document.createElement(),document.createTextNode()
29.得到元素的方法:document.getElementById()
30.设置表单中所有文本型的成员的值为空:
var form = window.document.forms[0]
for (var i = 0; i
if (form.elements.type == "text"){
form.elements.value = "";
}
}
31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中返回TRUE或FALSE)
32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length
33.单选按钮组判断是否被选中也是用checked.
34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加上.selectedIndex来确定被选中的值)
35.字符串的定义:var myString = new String("This is lightsword");
36.字符串转成大写:string.toUpperCase(); 字符串转成小写:string.toLowerCase();
37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到.
38.取字符串中指定位置的一个字符:StringA.charAt(9);
39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6);
40.数学函数:Math.PI(返回圆周率),Math.SQRT2(返回开方),Math.max(value1,value2)返回两个数中的最在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函数,Math.floor(Math.random()*(n+1))返回随机数
41.定义日期型变量:var today = new Date();
42.日期函数列表:dateObj.getTime()得到时间,dateObj.getYear()得到年份,dateObj.getFullYear()得到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期几,dateObj.getHours()得到小时,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTime(value)设置时间,dateObj.setYear(val)设置年,dateObj.setMonth(val)设置月,dateObj.setDate(val)设置日,dateObj.setDay(val)设置星期几,dateObj.setHours设置小时,dateObj.setMinutes(val)设置分,dateObj.setSeconds(val)设置秒 [注意:此日期时间从0开始计]
43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames["frameName"].ObjFuncVarName,frameName.ObjFuncVarName
44.parent代表父亲对象,top代表最顶端对象
45.打开子窗口的父窗口为:opener
46.表示当前所属的位置:this
47.当在超链接中调用JS函数时用:(javascript :)来开头后面加函数名
48.在老的浏览器中不执行此JS:
49.引用一个文件式的JS:
50.指定在不支持脚本的浏览器显示的HTML:
-----------------------------------------------------------------------------
js代码触发事件 函数列表
js代码触发事件 函数列表 |
onabort 当用户中断下载图像时触发。 |