1.若有一个jsp页面
<head>
<script type="text/javascript">
var t1 = document.getElementById("t1");
alert(t1);
</script>
</head>
<body>
<input id="t1" name="uname">
</body>
此时若执行的话会提示为null,因为执行顺序是从上到下依次进行。当执行js代码时,下边的t1还没执行,所以会提示为null。
解决方法有两个,一是把js代码写到body下边,另一种方法是无需改顺序,但要添加代码。如下:
<head>
<script type="text/javascript">
window.onload = function(){ //页面加载完毕时执行
var t1 = document.getElementById("t1");
//alert(t1);//不推荐使用
console.info(t1);//打印到控制台,推荐使用
}
</script>
</head>
<body>
<input id="t1" name="uname">
</body>
这样也能得到正确结果。
2.jquery中的ready方法会在dom对象构建完成后就会执行,而传统的onload则会在整个页面都加载完后才会执行。
基于ready()的方法有多种,推荐使用$(function(){//代码部分});
较复杂的有$(document).ready(function(){//代码部分});
3.若想取某个值,可以用
var $t1 = $("#t1");
对于变量的命名,在jquery中最好加“$”,为了与普通的js区分开,防止混淆。这等价于普通js中的
var t1 = document.getElementById("t1");
若想获取t1的值,在jquery中不能使用$t1.value;应该使用$t1.val(),使用
val()方法才行。
若实在是想使用value属性,可以转化为普通dom对象
①jquery对象转化为dom对象,jquery对象是一个数组对象
$t1[0].value;
或
$t1.get(0).value;
②dom对象也可以转化为jquery对象
var t1 = document.getElementById("t1");
var $t1 = $(t1);//注意此时没有双引号,即若想将dom对象转化为jquery对象,只需加一个$()即可
$t1.val();//也可取到值
这就实现了dom对象和jquery对象的转化。
4.jquery中attr方法使用
var r1 = $("#radio1").attr("checked")?"男":"女";
//这句话的意思是先取得radio1对象,若为checked,则为“男”,否则为“女”
<body>
性别:<input id="radio1" checked="checked" type="radio" name="sex" value="男">男
<input id="radio2" type="radio" name="sex" value="女">女
</body>
5.对于jquery选择器,只需搞懂基本选择器即可,其它两种现用现查就行。
基本选择器中多用
#id:根据给定id匹配一个元素,结果是返回单个元素,
element:根据给定元素名匹配所有元素,返回一个元素集合,名称可以是标签的名
.class:根据给定的类匹配所有元素,返回一个元素集合
如:
id匹配元素,可以用$("#div1"),其中div1是某个div的id
名称匹配元素,可以用$("span"),会获取所有的span
也可以合并匹配的元素,如
$("#div1,.claOne")//这为并列的关系,只要符合的都会列出来注意只有一个双引号,中间用逗号隔开,逗号表示并列
$(".clsFrame span")//则为包含的关系,中间没有逗号只有空格,表示包含,只会获取class为clsFrame下的span
$("span")//则是获取所有的span
6.
.css()是一个操作样式的方法,如$("id1").css("display","block");是将所选元素显示出来。
7.arguments是js中每一个方法都包含的属性,callee是调用函数本身。
arguments.callee则相当于递归,调用它自己。
8.选择器中过滤选择器也很常用,如
$("div[id]").show();//表示把含有id属性的div显示出来
$("div[title='A']").show();//把属性为title且值为A的div显示出来
$("div[title!='A']").show();//title属性值不为A的显示出来
$("div[title^='AB']").show();//title属性值以AB开头的显示出来
$("div[title$='c']").show();//title属性值是以c结尾的显示出来
$("div[title*='B']").show();//title属性值中包含B的显示出来
$("div[id^='div'][title*='B']").show();//多个选择器匹配,把div属性中id以div开头,并且title属性中包含B的显示出来
9.jquery中操作
元素的属性用attr()方法。
attr(name);//是获取属性的值,相当于getAttribute()
attr(name,value);//设置属性的值,相当于setAttribute()
而要获取
元素的值用val()方法
val();//获取元素的值
val(val);//设置元素的值
10.如何创建dom元素?
传统的需要用document.createElement();
而在jquery中,则简单许多。即在html语句添加$(),如
var myDiv = $("<div id='d1' title='createDiv'></div>")
$("body").append(myDiv);//这样才能显示出来
11.jquery遍历对象可以用each(callback),callback是一个函数,该函数内部有一个形参index,这为遍历元素的序号(index从0开始)。可以配合this使用。当然,函数名不一定叫callback,可以为如:
$("img").each(function(index){})
12.jquery在事件的写法上,与js不同。js需要加on,如onclick,onblur,onfocus等。而jquery中一律不要on
13.jquery提交表单,既可以用get,也可以用post,都有三个参数:1.url 2.参数 3.callback.当然,get和post方法都很少用,一般用jquery的ajax方法,它需要一个配选项options,即json
serialize()方法用来序列化表单值,创建url编码文本字符串
如有一个body,
<body>
<form id="myform">
用户名:<input name="uname"><br/>
密码:<input name="pwd">
</form>
</body>
①get方式提交表单
$.get("TestServlet?method=get",datas,function(data){
alert(data);
});
②post方式提交表单
$.post("TestServlet?method=post",datas,function(data){
alert(data);
});
③ajax方式提交,推荐使用
$.ajax({
type:"post",
url:"TestServlet?method=ajax",
async:true,//异步
cache:flse,//清除页面缓存
data:{ // 提价的数据,可以为json
uname:$("#myform").find("input[name="uname"]").val(),
pwd:$("#myform").find("input[name="pwd"]").val()
},
//下边有两种数据接收类型的处理方式
//⑴第一种
dataType:"json",//设置从服务器接收的数据类型为json对象
success:function(data){//回调函数,当响应成功时如何接收
alert(data);//会正常提示
}
//⑵第二种
dataType:"text",//设置从服务器接收的数据类型为文本
success:function(data){
alert(data);//此时alert会提示undefined,因为data不是对象
}
//解决方法是将文本转换为json对象
dataType:"text",
success:function(data){
var data = $.parseJSON(data);
alert(data);//此时才会正常显示
}
});
14.jquery上传可以用插件Uploadify