javascript入门

一、 JavaScript概述

1、 JavaScript是什么。有什么作用?(了解)

*JavaScript是因特网上最流行的脚本语言。

*脚本语言不能单独使用,必须嵌入到其它语言中组合使用

*JavaScript不能单独使用,必须和其它语言(HTML)结合使用

*浏览器解释运行

*作用是:能够控制前端页面的逻辑操作

比如:JS能够控制CSS的样式。(一般)

JS能够对表单项进行校验(重点)

JS能够对HTML元素进行动态控制(使用较多)

*特点:

安全性(没有訪问系统文件权限,无法用来做木马病毒)

跨平台性(浏览器有JS的解析器,仅仅要有浏览器就能执行JS代码,和平台无关)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                var sum=0;// int sum=0;
                for(var i=1;i<=9;i++){// int i=1;
                        sum+=i;
                        alert(sum); //System.out.print(sum);
                }
                
        </script>
  </head>
        
  <body>
        
        
  </body>
</html>

2、 JavaScript和Java的关系(了解)

ECMAScript

*JavaScript和Java一点关系都没有(雷锋和雷峰塔)

*JavaScript和Java的差别:

>JavaScript代码能够直接在浏览器运行,而Java必须先经过编译才干运行

>JavaScript是弱类型语言,Java是强类型语言

强类型语言:要求变量的使用严格符合定义。(比如:变量声明后都有一个固定的区域,int区域大小是32位)。编程时痛苦,调BUG时舒服

弱类型语言:不要求变量的使用严格符合定义。

(比如:变量声明后没有一个固定的区域,不论什么类型的值都能放在该区域)。编程时舒服,调BUG时痛苦

<html>

<head>

<script>

var sum = 0;

for(var i = 1; i <= 100; i++) {

sum += i;

}

alert(sum);

</script>

</head>

<body>

</body>

</html>

二、JavaScript语法及使用(重点)

凝视

*单行凝视

//

Myeclipse快捷键 ctrl+shift+c

*多行凝视

/* */

Myeclipse快捷键 ctrl+shift+/

变量

*标示内存中的一块空间,用于存储数据,数据是可变的

*格式:

var 变量名 = 变量值;

JavaScript中的变量声明都用varkeyword

变量值的数据类型(原始数据类型和引用数据类型)

>原始数据类型:

string 字符串类型

“”和’’都表示字符串

boolean 布尔类型

true,false

number 数字类型

整数和小数

null 空。表示引用类型的对象不存在

undefined 没有定义

变量声明未赋值时使用/对象的属性未赋值时使用

注:变量就像一个盘子,什么都能盛装。

变量的类型能够用typeof()来推断。

比如:var str=”aa”;alert(typeof(str));//string

变量的大写和小写是敏感的,yy和YY不是一个变量。

为什么 typeof 运算符对于 null 值会返回 "Object"。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。

如今,null 被觉得是对象的占位符。从而解释了这一矛盾,但从技术上来说。它仍然是原始值。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                /* 
                        var 变量名=变量值;
                
                        原始数据类型:
                        string  字符串
                                        ""  ''都表示字符串
                                        
                        boolean 布尔类型
                                        true , false
                                        
                        number  数字
                                        整数和小数
                        
                        null    空。对象为空(引用为空)
                        
                        undefined       没有定义  变量没有赋值就使用/使用 对象.属性 的时候,属性没有赋值就使用
                        
                        //变量就是一个盘子,装什么东西都能够
                        
                        引用数据类型:
                        typeof()  帮咱们推断变量是什么类型的
                        
                        变量名命名是大写和小写敏感的(区分大写和小写)
                */
                /* var str = "aa";
                var str2 = 'aa';
                var str3 = true;//false
                var str4 = 15;
                var str5 = 15.55;
                var date = null;
                var aa;
                str =15;
                str = true;
                str = "aa";
                
                alert(str);//aa 15 */
                
                /* var str = "aa";
                str =15;//number
                //str = true;//boolean
                var ss;
                var obj= null;
                alert(typeof(obj)); */
                
                /* var sf="aa";
                alert(Sf); */
                
                /* 
                        引用数据类型
                        
                        经常使用对象:
                        String,Array,Date,Math,RegExp
                        
                        Object 全部对象的父对象
                        
                        
                */
                var date = new Date();
                alert(date instanceof Object);
        </script>
  </head>
        
  <body>
        
        
  </body>
</html>

>引用数据类型(了解)

即对象

比如:var obj = new Object();

经常使用对象:

String,Array,Date,Math,RegExp

注:instanceof能够用来推断对象是否属于某类型。

返回true和false .比如:

Var str = new String();

Alert(str instanceof String);//true

*两种变量:

>全局变量

就是在<script>标签中定义的变量,在整个页面都有效

>局部变量

就是在函数体内定义的变量

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                /* 
                        全局变量
                        就是在script标签中的变量,对整个页面都有效
                
                        局部变量
                        就是在函数体中定义的变量
                */
                /* var str =10;
                
                for(var i=1;i<=3;i++){
                        
                }
                alert(i);//4 */
                
                /* function aa(){
                        var a=5;
                        alert(a);
                } */
                var x = 4;
                function show(x){
                x = 8;
                }
                show(x);
                alert("x = "+x);
                /* A.8   
                B.4   
                C.undefined */

        </script>
  </head>
        
  <body>
        
        
  </body>
</html>

练习:例如以下代码显示X值是多少?

var x = 4;

function show(x){

x = 8;

}

show(x);

alert("x = "+x);

A.8

B.4

C.undefined

函数(方法)

*用于代码封装,提高复用性

*格式 function 函数名(參数列表){

函数体;

return ;

}

*函数定义。keyword function

*定义參数列表时。不必使用varkeyword。否则报错

*假设没有须要返回的參数。return能够不写

*函数须要调用才干运行,和Java一样。

*JavaScript不存在重载形式:

>每一个JavaScript中。都存在一个数组arguments。用于存储參数列表

思考:例如以下调用方法会打印输出什么效果?

function getSum(){

return 100;

}

var sum = getSum;

alert(sum);

A. 100

B. undefined

C. function getSum(){return 100;}

*假设调用方法时忘记加(),那么会把函数对象的引用传给变量

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>函数.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
        <script type="text/javascript">
                //用来做加法的方法  a b  a+b
                
                /* public int sum(int a,int b){
                        return a+b;
                        
                } */
                //JavaScript不定义返回值的类型
                //javascript 方法不存在重载
                        //由于在JavaScript方法中存在arguments隐藏对象(数组)。就是用来获取传进来的參数列表的
                //JavaScript中假设调用方法不加括号。那么会把方法(对象)的引用传出来
                /* function sum(a,b){
                        alert(arguments.length);
                        alert(arguments[0]);
                        alert(arguments[1]);
                        alert(arguments[2]);
//                      alert(a);
//                      alert(b);
                }
                sum(5,6,7); */
                function getSum(){
                        return 100;
                }
                        var sum = getSum;
                        alert(sum);

        </script>
  </head>
        
  <body>
    
  </body>
</html>

*两种扩展函数:

>动态函数(了解会用)

通过JS的内置对象Function来动态创建

格式: new Function(參数一,參数二);

參数一是函数形參列表

參数二是函数体

>匿名函数(较经常使用)

没有名称的函数。函数的简化形式

格式:var str = function(參数列表){

函数体;

return;

};

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                /* 
                        动态函数(使用比較少)
                                Function 对象
                        匿名函数
                
                */
                /* var par = "a,b,c";
                var par2 = "return a+b+c";
                var str =new Function(par,par2);
                alert(str(1,2,3)); */
                
                var str=function(a,b){
                        return a+b;
                };
                alert(str(1,2));
        </script>
  </head>
        
  <body>
        
        
  </body>
</html>

运算符

算术运算符(经常使用)

+号除了运算外。能够作为连接符

-号除了运算外。能够作为转换符

alert(true + 1); // 2

比較运算符(经常使用)

== 比較值

=== 又比較值和类型语句(流程控制语句)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                /* 
                        算术运算符
                        +       连接符
                        -       转换符
                        
                                NaN意思是不是数字
                        比較运算符
                        ==      仅仅是比較值。即使类型不同也没关系
                        ===     不仅比較值,也同一时候比較类型
                        
                */
                /* var str=15;
                var str2="1";
                alert(str+str2);//151 */
                /* var str =15;
                var str2 = "1";
                alert(str-str2);//14 151 */ 
                /* var str= 15;
                var str2="a";
                alert(str-str2);//NaN */
                /* var str=8;
                //alert(str==8);//true
                //alert(str=="8");//true
                alert(str===8);//true
                alert(str==="8");//false */
                /* var str = (8==8)?
8:0; alert(str); */ </script> </head> <body> </body> </html>

流程控制语句

对程序执行流程控制的表达式

n 推断语句

IF

if(8 == num){

赋值的问题。须要注意。

}else{

}

0、-0、null、""、false、undefined 或 NaN。为false

否则为true

和Java中一样。

switch(n)

{

case 1:

运行代码块 1

break

case 2:

运行代码块 2

break

default:

假设n即不是1也不是2,则运行此代码

}

练习:下面代码输出结果为:

var a=15;

if(a=15){

alert(15);

}else{

alert(“else”);

}

A. 15

B. Else

n 循环语句

For循环(较经常使用)

for(var i=0;i<=8;i++){

// 循环体

}

增强FOR循环(不灵活,使用少。但开发中会有使用)(了解会用,工作中自己进行尝试就可以)

for(变量 in 对象){

// 循环体

}

*里面的变量代表下标

*使用 inkeyword

*遍历数组(或对象),里面要用数组[下标]

* 比如:

Var s= new Array();

s[0]=1;

s[1]=2;

for(x in s){

alert(s[x]);

}

while(表达式){

// 循环体

}

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                /* 
                        推断语句
                        IF
                        0、-0、null、""、false、undefined 或 NaN。为false
                        否则为true 
                        
                        FOR循环   var 
                                        99乘法表
                        while do while
                                
                        增强for
                */
                /* function str(){
                        return null;
                }
                var x=8;
                var aaaa=str();
                if(aaaa){
                        alert(1);//1
                }else{
                        alert("else");
                } */
                /* for(var i=0;i<3;i++){
                        
                } */
                /* if(-0){
                        alert(1);
                }else{
                        alert("eeee");
                } */
                
                var i=new Array();
                i[0]=1;
                i[1]=2;
                for(x in i){
                        alert(i[x]);
                }
        </script>
  </head>
        
  <body>
        
        
  </body>
</html>

对象

l String对象(了解会用)

* var str = "abc";

* var str = new String("abc");

* 属性:length 字符串的长度

* 方法

* 和java中String对象类似的方法(基本同样,须要练习)

* charAt(index) 返回指定位置的字符(经常使用)

* indexOf(searchvalue,fromindex) 检索字符串

* lastIndexOf() 从后向前的

* replace() 替换字符串(较经常使用)

* substring(start,stop) 从哪開始,到哪结合(包括開始不包括结束)

* substr(start,length) 从哪開始,截取长度

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                /* 
                        String对象
                        
                        var s = new String("aaa");
                        var s = "aaa";
                        
                        document.write();//会把值输出到浏览器页面上
                */
                /* var str ="abc";
                var str2 ="你好么";
                document.write(str2.blink());
                document.write(str2);
                document.write(str.charAt(1)); */
                var str = "ABC";
                document.write(str.toLowerCase());
                
        </script>
  </head>
        
  <body>
        
        
  </body>
</html>

l Array对象(重要)

* js的数组

* var arr = [1,2,3];

*var arr = new Array();数组长度默觉得0

* var arr = new Array(4); 数组长度是4

* var arr = new Array(1,2); 数组元素是1,2

* 数组的长度

* length

* 数组的长度是可变的

* 数组元素能够是随意类型(注意)

* 方法

* concat() 链接数组或者元素都能够(较少)

* join(separator) 转化成字符串

* push() 向末尾加入一个元素。返回新的长度

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                /* 
                        Array对象
                        var str = [1,2,3]; 长度是3,长度可变
                        var str = new Array();长度默认是0,长度可变
                        var str = new Array(5);长度默认是5,长度可变
                        var str = new Array(1,2);长度是2,长度可变
                        
                        join(分隔符)  默认是 
                        push   就是把元素加入进数组末尾
                */
                /* var str=[1,2,3];
                var str2=[4,5,6];
                alert(str.concat(str2)); */
                
                /* var str2=[1,2,3];
                var str=str2.join();
                alert(str); */
                var str2=[1,2,3];
                var str=5;
                str2.push(str);
                alert(str2);//
                
                
        </script>
  </head>
        
  <body>
        
        
  </body>
</html>

l Date对象(比較经常使用)

* var date = new Date(); 当前的时间

* toLocaleString() 依据本地的日期格式转化成字符串(了解)

* getDate() 返回一个月中的某一天(了解)

* getMonth() 获取月份(0-11)(了解)

* getFullYear() 获取年(了解)

* getTime() 获取毫秒数(比較重要)

* setTime() 通过毫秒数设置日期(比較重要)

同一时候也能够通过构造器设置 new Date(毫秒数);

* Date.parse(datestring) 解析字符串。返回毫秒数(重要的)

* 2015-4-29 解析不了

* 2015/4/29 是能够解析的

l Math对象(了解)

round(x) 四舍五入

random() 随机生成0~1数字

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                /* 
                        Date对象
                        var aa = new Date();
                */
                var aa = new Date();
//              alert(aa.toLocaleDateString());
                /* alert(aa.getDate());
                alert(aa.getMonth());
                alert(aa.getFullYear()); */
                /* var long1 = aa.getTime();
                var long2=long1-(1000*60*60*24);
                
                aa.setTime(long2);
                alert(aa.toLocaleString()); */
                
                var bb = Date.parse("2015/5/21");
                //aa.setTime(bb);
                var cc = new Date(bb)
                alert(cc.toLocaleString());
        </script>
  </head>
        
  <body>
        
        
  </body>
</html>

l RegExp对象(重要)

*正则对象 正确的规则

* var reg = new RegExp("表达式"); (开发中基本不用)

* var reg = /^表达式$/ 直接量(开发中经常使用)

直接量中存在边界。即^代表開始,$代表结束

* test(string) (常常使用)符合规则返回true,不符合返回false

比如:

if(reg.test("12345")){

//

}else{

//

}

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript">
                /* 
                        RegExp对象
                        var s = new RegExp("表达式");
                        var s = /^表达式$/;
                        
                        test()
                */
                var reg = /^\s*$/;//验证空
                var checkText = "";
                alert(reg.test(checkText));
                
        </script>
  </head>
        
  <body>
        
        
  </body>
</html>

练习:推断字符串是否为空

var msg=””;

var reg = /^\s*$/;

alert(reg.test(msg));

l 全局函数

Global

浏览器内存中游离的函数,直接拿过来用。

eval() 能够解析字符串,运行里面的javascript的代码(学习JSON)(最经常使用)

isNaN() 是否 不是 数字 (经常使用)

encodeURI() 编码

decodeURI() 解码

(不用看)escape不编码字符有69个:*。+。-。.,/,@,_,0-9,a-z。A-Z

(了解)encodeURI不编码字符有82个:!,#,$,&,'。(,),*,+,,,-,.,/。:,;,=,?

,@。_,~。0-9,a-z,A-Z

(了解)encodeURIComponent不编码字符有71个:!, ',(,)。*。-。.,_,~,0-9,a-z,A-Z

三、JavaScript和HTML的结合方式(了解)

l 两种使用方式

>内部使用

*<script type=”text/javascript”>JavaScript的代码</script>

>外部引用

*<script type=”text/javascript” src=”javascript文件路径”></script>

*外部引用时script标签内不能有script代码。即使写了也不会运行

注意:<script>标签写在随意地方都能够,可是要注意HTML和JAVASCRIPT的载入顺序

<body onload=””> 在网页载入完成后 做什么事

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo1.html</title>
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

        <script type="text/javascript" >
                function aa(){
                        alert(document.getElementById("a").innerHTML);//打印 你好啊
                        alert("1");
                        alert("2");
                }
                
                
        </script>
  </head>
        
  <body onload="aa();">
        <span >你好啊</span>
        
  </body>
</html>

四、JavaScript的组成(了解)

JavaScript的组成

*ECMAScript (核心)

*DOM 文档对象类型

*BOM 浏览器对象类型

练习:

1、99乘法表

2、2015-01-01到2015-09-01有多少天

1、答案

<script type="text/javascript">

for(var i=1;i<=9;i++){

for(var j=1;j<=i;j++){

document.write(j+"*"+i+"="+j*i+"\t");

}

document.write("<br/>");

}

</script>

2答案:245

<script type="text/javascript">

var dlong1=Date.parse("2015/01/01");

var dlong2=Date.parse("2015/09/03");

alert((dlong2-dlong1)/1000/60/60/24);

</script>