JavaScript_1:============
动态网页技术
---> 服务端技术
---> 客户端技术
javascript 基于解释性的语言
动态网页:
服务器端动态
客户端动态
减少服务器压力
功能受浏览器控制 需要看浏览器支持什么
========= 词法特性 =================
采用unicode字符集,但是仅限于注释和字符串变量值, 变量和函数的标识符不能使用
Unicode字符集。
基本特征 :
变量没有数据类型 。
JAVA:
int a = 123;
String b = "123";
Javascript :
var a = 123;
var b = "123";
基本程序控制和java一样。
==============================================
数据类型和值 :
弱数据类型 设计的比较简单 随着功能愈加强大 已经成为了一个缺陷
在程序中,变量的值可以是 :
三种基本数据类型 :
数字: 123, 123.22
文本字符串: "zhongguo" ,"中国", '123'
boolean类型: true | false
非0 和 0 非null| null
除基本数据类型以外, javascript 还支持复合类型 :
Object( 对象 ) , Array( 数组 )
boolean :
boolean 的其他表示方法 :
1 , 0 和 非0 值 。
2, 空 和非空 。
特殊数据类型:null 和 undefine (未定义的).
javascript 是 弱数据类型的语言,其变量没有数据类型。
所有变量声明时都使用 var 类型 。 而且统一变量可分别
存储不同类型的值
var a = 123;
a = "123";
var a = 1;
var b = "2";
var c = a + b ; "12"
将javascript代码引入到Html中
1,代码直接嵌入
<script language="javascript">
......
......
</script>
2, 引入外部文件
<script type="text/javascript" src="js/functions.js"></script>
<link rel="stylesheet" type="text/css" href="*.css">
javascript简单交互手段
alert( "" );
document.write( "" ) ;
只有function里才算局部变量
If、for里都不算
创建并使用对象 。
1,
var obj = new Object();
obj.name = "zhangsan" ;
obj.age =123 ;
obj.email = "liucy@cernet.com" ;
属性的两种访问方式:
alert( obj.name ) ;
alert( obj["name"] ) ;
本质:多个属性的集合
缺点:不严谨
var obj = { name : "zhangsan" , age : 24 , email : "liucy@cernet.com" } ;
alert( obj.gender ) ;
for循环
第一种
for (i = 0; i <= 5; i++)
{
document.write(i)
document.write("<br>")
}
第二种使用 for...in 循环语句
for...in 循环中的循环计数器是一个字符串,而不是数字。它包含了当前属性的名称或者表示当前数组元素的下标。
<script type="text/javascript">
// 创建一个对象 myObject 以及三个属性 sitename, siteurl, sitecontent。
var myObject = new Object();
myObject.sitename = "布啦布啦";
myObject.siteurl = "blabla.cn";
myObject.sitecontent = "网页教程代码图库的中文站点";
//遍历对象的所有属性
for (prop in myObject) prop是数组元素的下标和java种
{ 的foreach有不同的含义
document.write("属性 '" + prop + "' 为 " + myObject[prop]);
document.write("<br>");
}
创建并使用数组 。
1,
var arr = new Array();
var[0] = 1 ;
var[1] = 3 ;
2,
var arr = [ 1,2,3,4,5,6 ] ;
3,
var arr = [ 1,,,,6] ;
4,
var arr = [ 1, 4.4, "sd" , true] 类似一个集合
不需要指定数组长度
使用变量 :
变量需要先声明,后使用 。
未付值的变量初始值是undefine .
重复声明 :
使用 var 重复声明是合法的. 如果重复声明中有初始值的话, 则相当于付值
语句 , 没有初始值的话,变量保留以前的值 .
遗漏声明 :
如果使用了一个未声明的变量 , javascript会对这个变量作隐式声明。
但是所有隐式声明的变量,都会成为全局变量,即使声明是发生在函数体
之内的 。
函数声明和使用 :
function name( a , b , c ) {}
支持内联函数 :
function a(){
function b();
b();
}
内联函数只能在作用域内使用。
变量作用域 :
在javascript中不存在块作用域 , 声明在块中的变量,在块的外面一样可以使用
if(){
var a = 10 ;
}
alert( a ) ; //合法 。
作为数据的函数 :
function a( x, y ){ .... }
var b = a ;//用变量存函数;
b( 1 , 2 ) ;//相当于a(1,2);
思考:
var student = new Object();
student.name = "zhangsan";
通过构造函数创建函数 。
var a = new Function( "a" , "b" , "return a + b " );
a , b , 新建对象的参数名称 , 如果有多个可以依次填入 :
new Function( "a" , "b" , "c" , ... " return a + b + ... + n ; " ) ;
调用 : a( 10 , 20 ) ;
通过函数直接量:
var a = function ( x , y ){ return x + y ; }
参数数量验证:arguments.length
变量作用域:
不存在块作用域 注意 这里所说的块 并不是函数块
window.parent
JavaScript_2:==================
javascript中的常见事件 :
一般性事件 :
onclick 单击事件
ondblclick 双击事件
onmouseomove 鼠标移动
onmouseover 鼠标移入
onmouseout 鼠标移出
onmousedown 鼠标键按下
onmouseup 鼠标键松开
适用 几乎全部的可显示元素(标签) 。
页面相关事件 :
onload : 页面加载时触发。即把页面所有的东西都下载完时触发 <body>
onscroll : 页面滚动时触发。 <body>
onstop : 按下stop按钮时触发。 <body>
onresize : 调整大小时触发 。 <body>
onmove : 窗口移动时触发。 <body>
表单相关事件 :
onblur : 当前元素失去焦点时触发。 <input>
onchange : 当前元素失去焦点,并且值发生变化时触发。<input>
onfocus : 当前元素获得焦点时触发,指光标移到当前处,即获得焦点 。 <input>
onsubmit : 表单被提交时触发 <form οnsubmit=”return tes()”>
==============================================
DOM : 是W3C提供的一组规范 , 可以在独立于平台的前提下修改文档的内容和结构。
DOM 将文档的内容封装到对象及对象的属性和关系中 。
通过操作DOM对象及对象的属性,达到修改文档内容及结构的目的 。
DOM里有各种方法,用于修改文档内容和结构;
可以将DOM理解为文档内容的树状表示法 。
<table>
<tbody>
<tr><td>zhangsan</td><td>20</td></tr>
<tr><td>lisi</td><td>21</td></tr>
</tbody>
</table>
用于遍历XML文档的DOM方法:
document.getElementById( "" ) XMLElement
document.getElementsByTagName( "name" ) array
用于处理XML文档的DOM属性 :
childNodes Array //返回的是一个数组
firstChild XMLElement //第一个子标签
lastChild XMLElement //最后一个子标签
nextSibling XMLElement //同级的下一个标签
previousSibling XMLElement //同级的上一个标签
parentNode XMLElement //直接父标签
通过 "." 访问element属性 。
document对象为DOM的内置对象,代表XML文档的根
在HTML文件中可以理解为body标签 。
document.createElement( "div" ) ;
document.createTextNode( "text" ) ; 创建文本
var txtA = document.createTextNode("hello"); //创建文本内容
var colA = document.createElement("td"); //创建标记
colA.appendChild(txtA); //添加子标记
element.getAttribute( Name ) ;
element.setAttribute( "name" , value ) ;
element.appendChild()
element.insertBefore( newNode , targetNode ) ;
element.removeAttribute( node )
element.removeChild( node ) ;
element.replaceChild( newNode , oldNode ) ; //用newNode替换oldNode
element.hasChildnodes()
浏览器差异。
1) table 和 tbody
2) 设置属性 ff element.setAttribute( "name" , "value" ) ;
ie element.name = value
3
设置css ff element.setAttribute("style","color:blue" ) ;
ie element.style.cssText = "color:blue" ;
ff element.setAttribute("class","xxx" ) ;
ie element.className ;
1 变量没有数据类型 ---> 值有
基本数据类型 :
数字 | 字符串 | boolean
|- 0,非0 | null 和非null
复合类型:
数组(没有固定长度,可以装任何类型的值)
对象(只有属性没有方法)
2 变量可以重复声明
3 变量如果没有经过声明,系统会自动对其做隐式声明(作为全局变量)
4 function 函数名(a, b){}
5 通过构造方法创建函数: var fun = new Function("");
通过函数直接量创建函数: var fun = function(){}
6 作为变量函数
var fun;
function testFun(a, b){
return a+b;
}
fun = testFun;
fun(1,2);
7 事件句柄:onclick……
8 DOM ---> getElementById
getElementsByTagName
9各种表单验证=====================
1) 两次输入密码是否相同
<FORM METHOD=POST ACTION="">
<input type="password" id="input1">
<input type="password" id="input2">
<input type="button" value="test" οnclick="check()">
</FORM>
<script>
function check(){
with(document.all){
if(input1.value!=input2.value) {
alert("false")
input1.value = "";
input2.value = "";
}
else document.forms[0].submit();
}}
</script>
2)6. 验证油箱格式
<SCRIPT LANGUAGE=javascript RUNAT=Server>
function isEmail(strEmail) {
if(strEmail.search(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/) != -1)
return true;
else alert("oh");
}
</SCRIPT>
<input type=text οnblur=isEmail(this.value)>
3)表单项不能为空
<script language="javascript">
function CheckForm(){
if (document.form.name.value.length == 0) {
alert("请输入您姓名!");
document.form.name.focus();
return false;
}
return true;
}
</script>
4) 比较两个表单项的值是否相同(密码比较)
<script language="javascript">
function CheckForm()
if (document.form.PWD.value != document.form.PWD_Again.value) {
alert("您两次输入的密码不一样!请重新输入.");
document.ADDUser.PWD.focus();
return false;
}
return true;
}
</script>