js常识

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 当用户中断下载图像时触发。 
onactivate 当对象设置为活动元素时触发。 
onafterprint 对象所关联的文档打印或打印预览后立即在对象上触发。 
onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发。 
onbeforeactivate 对象要被设置为当前元素前立即触发。 
onbeforecopy 当选中区复制到系统剪贴板之前在源对象触发。 
onbeforecut 当选中区从文档中删除之前在源对象触发。 
onbeforedeactivate 在 activeElement 从当前对象变为父文档其它对象之前立即触发。 
onbeforeeditfocus 在包含于可编辑元素内的对象进入用户界面激活状态前或可编辑容器变成控件选中区前触发。 
onbeforepaste 在选中区从系统剪贴板粘贴到文档前在目标对象上触发。 
onbeforeprint 对象的关联文档打印或打印预览前在对象上触发。 
onbeforeunload 在页面将要被卸载前触发。 
onbeforeupdate 当成功更新数据源对象中的关联对象前在数据绑定对象上触发。 
onblur 在对象失去输入焦点时触发。 
onbounce 当 marquee 对象的 behavior 属性设置为“alternate”且字幕的内容到达窗口一边时触发。 
oncellchange 在数据供应者中的数据变更时触发。 
onchange 当对象或选中区的内容改变时触发。 
onclick 在用户用鼠标左键单击对象时触发。 
oncontextmenu 在用户使用鼠标右键单击客户区打开上下文菜单时触发。 
oncontrolselect 当用户将要对该对象制作一个控件选中区时触发。 
oncopy 当用户复制对象或选中区,将其添加到系统剪贴板上时在源元素上触发。 
oncut 当对象或选中区从文档中删除并添加到系统剪贴板上时在源元素上触发。 
ondataavailable 每当异步传输数据的数据源对象的数据到达时触发。 
ondatasetchanged 当数据源对象对应的数据集发生变更时触发。 
ondatasetcomplete 触发就表明数据源对象所有数据都可用。 
ondblclick 当用户双击对象时触发。 
ondeactivate 当 activeElement 从当前对象变为父文档其它对象时触发。 
ondrag 当进行拖曳操作时在源对象上持续触发。 
ondragend 当用户在拖曳操作结束后释放鼠标时在源对象上触发。 
ondragenter 当用户拖曳对象到一个合法拖曳目标时在目标元素上触发。 
ondragleave 当用户在拖曳操作过程中将鼠标移出合法拖曳目标时在目标对象上触发。 
ondragover 当用户拖曳对象划过合法拖曳目标时持续在目标元素上触发。 
ondragstart 当用户开始拖曳文本选中区或选中对象时在源对象上触发。 
ondrop 当鼠标按钮在拖曳操作过程中释放时在目标对象上触发。 
onerror 当对象装载过程中发生错误时触发。 
onerrorupdate 更新数据源对象中的关联数据出错时在数据绑定对象上触发。 
onfilterchange 当可视滤镜更改状态或完成转换时触发。 
onfinish 当字幕循环完成后触发。 
onfocus 当对象获得焦点时触发。 
onfocusin 当元素将要被设置为焦点之前触发。 
onfocusout 在移动焦点到其它元素之后立即触发于当前拥有焦点的元素上触发。 
onhelp 当用户在浏览器为当前窗口时按 F1 键时触发。 
onkeydown 当用户按下键盘按键时触发。 
onkeypress 当用户按下字面键时触发。 
onkeyup 当用户释放键盘按键时触发。 
onlayoutcomplete 当打印或打印预览版面处理完成用来自于源文档的内容填充当前 LayoutRect 对象时触发。 
onload 在浏览器完成对象的装载后立即触发。 
onlosecapture 当对象失去鼠标捕捉时触发。 
onmousedown 当用户用任何鼠标按钮单击对象时触发。 
onmouseenter 当用户将鼠标指针移动到对象内时触发。 
onmouseleave 当用户将鼠标指针移出对象边界时触发。 
onmousemove 当用户将鼠标划过对象时触发。 
onmouseout 当用户将鼠标指针移出对象边界时触发。 
onmouseover 当用户将鼠标指针移动到对象内时触发。 
onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。 
onmousewheel 当鼠标滚轮按钮旋转时触发。 
onmove 当对象移动时触发。 
onmoveend 当对象停止移动时触发。 
onmovestart 当对象开始移动时触发。 
onpaste 当用户粘贴数据以便从系统剪贴板向文档传送数据时在目标对象上触发。 
onpropertychange 当在对象上发生对象上发生属性更改时触发。 
onreadystatechange 当对象状态变更时触发。 
onreset 当用户重置表单时触发。 
onresize 当对象的大小将要改变时触发。 
onresizeend 当用户更改完控件选中区中对象的尺寸时触发。 
onresizestart 当用户开始更改控件选中区中对象的尺寸时触发。 
onrowenter 触发就表明当前行已经在数据源中更改,对象上有可用的新数据值。 
onrowexit 当数据源控件更改对象当前行前触发。 
onrowsdelete 当行将要从记录集中被删除时触发。 
onrowsinserted 当在当前记录集中插入新行后触发。 
onscroll 当用户滚动对象的滚动条时触发。 
onselect 当当前选中区改变时触发。 
onselectionchange 当文档的选中状态改变时触发。 
onselectstart 对象将要被选中时触发。 
onstart 在 marquee 对象的每次循环开始时触发。 
onstop 当用户单击停止按钮或离开 Web 页面时触发。 
onsubmit 当表单将要被提交时触发。 
onunload 在对象卸载前立即触发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值