JavaWeb基础——JavaScript

JavaScript主要起对页面的一些动态操作以及与后台的交互作用
JavaWeb基础——JavaScript_第1张图片
JavaWeb基础——JavaScript_第2张图片


<html>
<head>
<meta charset="UTF-8">
<title>演示javascripttitle>
head>
<body>
    
    <script type="text/javascript">
    /*
    通常高级程序设计预言所包含的语法内容:
    1、关键字:预言中被赋予特殊含义的单词
    2、标识符:用于标示数据表达式的符号,通常可以理解为在程序中自定义的名称,比如变量名、函数名
    3、注释:注解说明解释程序
    4、变量:用于标示内存中一片空间,用于存储数据,该空间中的数据是可以变化的,当数据不确定时使用变量
    5、运算符:可以让数据进行运算的符号
    6、语句:用于对程序的运行流程进行控制的表达式
    7、函数:用于对功能代码进行封装,便于提高复用性
    8、数组:对多数据进行存储,便于操作,即容器
    9、对象:一个封装体,既可以封装数据又可以封装函数
    */
    script>
    <script type="text/javascript">
    /*
    js中定义变量,使用到关键字。
    这个关键字就是var
    */
    //定义变量,js是弱类型的
    var x=3;//var不写也行,因为js是非严谨的语言
    x="abc";//重新赋值为字符串abc
    x=3.45;//赋值为小数,即数值类型
    x=true;//赋值为boolean类型
    x='c';//赋值为字符串c,不存在字符
//  alert("x="+x);//这是一个函数,将具体的参数通过对话框进行显示
    script>

    <script type="text/javascript">
        /*
        运算符:
        1、算术运算符
            + - * / % ++ --
        2、赋值运算符
            = += -= /= 
        3、比较运算符
        4、逻辑运算符
        5、位运算符
        6、三元运算符
        */  
        //1、算术运算符演示
        var a=3710;
    //  alert("a="+a/1000*1000);//a=3710 因为js是弱类型,即3.71*1000

        var a1=2.3,b1=4.7;
    //  alert("a1+b1="+(a1+b1));

    //  alert("12"-1);//结果:11
    //  alert("12"+1);//结果:121
    //  alert(true+1);//结果:2 因为在js中false就是0或者null,非0,非null。就是true,默认用1表示

        var n=3,m;
        m=++n;
    //  alert("n="+n+",m="+m);
//===============================================
    //2、赋值运算符
        var i=3;
        i=i+2;
        i+=2;
    //  alert("i="+i);
//===============================================
    //3、比较运算符
        var z=3;
    //  alert(z!=4);
//===============================================
    //4、逻辑运算符
        var t=4;
    //  alert(t>3 && t<6);
//===============================================
    //5、位运算符
        var c=6;
    //  alert(c&3);
//===============================================
    //6、三元运算符
    //  alert(3>10?100:200);
        script>

        <script type="text/javascript">
        /*
        细节:
        1、undefined:未定义,其实它就是一个常量


        */
        var xx;
    //  alert(xx);//undefined
    //  alert(xx==undefined);//结果:true

    //要想获取具体值的类型,可以通过typeof来完成
    //  alert(typeof("abc"));//string
    //  alert(typeof(2.5));//number
    //  alert(typeof(true));//boolean
    //  alert(typeof(78));//number
    //  alert(typeof('9'));//string

        script>

        <script type="text/javascript">
            var x=3;
    //      if(x=4)  
            if(4==x){//建议将常量放在左边,以报错来修正代码
                alert("yes");
            }
            else{
                alert("no");
            }


        script>

        <script>
        //循环结构
        var x=1;
        document.write("");
        while(x<10)
            {
                //将数据直接写到当前页面中
                document.write("x="+x+"
"
); x++; } document.write("
"
); script> <script type="text/javascript"> /* 练习:在页面中显示一个99乘法表,循环 */ document.write(""); for(var x=1;x<=9;x++){ document.write(""); for(var y=1;y<=x;y++){ document.write(""); } document.write(""); } document.write("
"+y+"*"+x+"="+y*x+"
"
);
script> body> html>

1、变量


<html>
<head>
<meta charset="UTF-8">
<title>局部变量和全局变量title>
head>
<body>
    <script type="text/javascript">
    /*
    此处的x是全局变量,在整个页面都有用
    */
        for(var x=0;x<3;x++){
            document.write("x="+x);
        }
        document.write("x===="+x);

    script>

    <script type="text/javascript">
        document.write("xx="+x);
    script>

    <script type="text/javascript">
        /*只有在函数封装体中才是局部变量*/
        function show(){
            var x=6;//局部变量
        }
        document.write("x==="+x);//结果是未定义
    script>
    <script type="text/javascript">
        var x=3;//全局变量x
        function show(x){//局部变量x
            x=8;
        }
        show(x);
        document.write("x="+x);//结果:3
    script>
body>
html>

2、字符串
out.js

/**
 * 打印指定参数数据到页面上,并换行
 */
function println(param){
    document.write(param+"
"
); } /** * 打印指定参数数据到页面上 */ function print(param){ document.write(param); }

<html>
<head>
<meta charset="UTF-8">
<title>js字符串title>
head>
<body>
    <script type="text/javascript" src="out.js">script>
    <script type="text/javascript">
        /*
        字符串表现形式:
        var str=new String("abc");
        var str="abc"
        */
        var str="abcde";
        println("len="+str.length);
        println(str);
        alert(str.bold());//结果:abcd 写数据就是加粗
        println(str.fontcolor());//给字体加颜色
        println(str.link("http://www.baidu.com"));//给字符串加超链接
        println(str.substr(1,3));//bcd 从下标为1到下标为3的位置
        println(str.substring(1,3));//bc 从下标为1到下标为3的位置,包含头不包含尾

        /*
        发现js中的string对象方法有限,想要对字符串操作的其他功能
        比如:去除字符串两端的空格,这时只能定义
        */
        //去除字符串两端的空格
        function trim(str){
            /*
            定义两个变量,一个记录开始的位置,一个记录结束的位置
            对开始的位置的字符进行判断,如果是空格,就进行递增,直到不是空格为止
            对结束的位置的字符进行判断,如果是空格,就进行递减,直到不是空格为止
            必须要保证开始<=结束,这样才可以进行截取
            */
            var start,end;
            start=0;
            end=str.length-1;
            while(start<=end && str.charAt(start)==' '){
                start++;
            }
            while(start<=end && str.charAt(end)==' '){
                end--;
            }
            return str.substring(start,end+1);
        }
        var s="    ab c    ";
        alert("-"+trim(s)+"-");
        /*
        既然trim方法是用来操作字符串的方法,可不可以像字符串已有的方法一样,将该字符串也定义到字符串对象中呢?
        直接用字符串对象调用就可以了

        这里就可以使用一个字符串的原型属性来完成
        原型:就是该对象的一个描述,改描述中如果添加了新功能
        那么该对象都会具备这些新功能,而prototype就可以获取到这个原型对象
        通过prototype就可以对对象的功能进行扩展

        需求:给string对戏那个添加一个可以去除字符串两端空格的新功能
        就可以使用原型属性来完成
        */
        //给string的原型中添加一个功能,注意:给对象添加新功能直接使用对象
        //对象新内容.新内容即可
    //  String.prototype.len=199;//给string的原型对象添加一个属性,名为len,值为199
    //  println("haha".len);//结果:199

    //添加行为
    //  String.prototype.trim=trim;//和下面的效果一样
        String.prototype.trim=function(){
            var start,end;
            start=0;
            end=this.length-1;
            while(start<=end && this.charAt(start)==' '){
                start++;
            }
            while(start<=end && this.charAt(end)==' '){
                end--;
            }
            return this.substring(start,end+1);
        }


    script>
body>
html>

3、原型练习

stringtool.js

/**
 * 字符串新功能,添加一个将字符串转成字符数组
 * 返回一个数组
 */
String.prototype.toCharArray=function(){
    //定义一个数组
    var chs=[];
    //将字符串中的每一位字符存储到字符数组中
    for(var x=0;x<this.length;x++){
        chs[x]=this.charAt(x);
    }
    return chs;
}
/*
 * 添加一个,将字符串进行反转的方法
 * 
 */
String.prototype.reverse=function(){
    var arr=this.toCharArray();
    //将数组位置置换功能进行封装,并定义到了反转功能内部
    function swap(arr,a,b){
        var temp=arr[a];
        arr[a]=arr[b];
        arr[b]=temp;
    }
    for(var x=0,y=arr.length-1;xreturn arr.join("");
}

<html>
<head>
<meta charset="UTF-8">
<title>原型练习title>
head>
<body>
    <script type="text/javascript" src="stringtool.js">script>
    <script type="text/javascript" src="out.js">script>
    <script type="text/javascript">
        /*
        练习1、给字符串添加一个功能,将字符串变成一个字符数组
        练习2、给字符串添加一个功能,将字符串进行反转
        */
        var str="abcde";
        println(str.toCharArray());
        println(str.reverse());
    script>
body>
html>

4、函数


<html>
<head>
<meta charset="UTF-8">
<title>Insert title heretitle>
head>
<body>
    <script type="text/javascript">
    /*
    js中的函数演示:
    函数:就是一个功能的封装体
    定义功能通常需要两个明确。
        1、功能的结果
        2、功能实现中的参与运算的未知的内容

    js中的定义函数的格式
    通过指定的关键字来定义
    function 函数名(参数列表){
        函数体;
        return 返回值;//如果没有具体的返回值,return语句可以省略不写
    }
    */
    function demo(){
        alert("demo run");
        return;
    }
//  demo();//调用函数

    /*
    需要加法运算
    */
    function add(x,y){
        return x+y;
    }
    var sum=add(4,5);
//  alert("sum="+sum);
    script>

    <script type="text/javascript">
        /*
        函数的一些细节
        1、只要使用函数的名称就是对这个函数的调用
        2、函数中有一个数组在对传入的参数进行存储,这个数组就是argument
        */
        function show(x,y){
        //  alert(x+":"+y);
        for(var a=0;a<arguments.length;a++){
            document.write(arguments[a]);
        }
    }
//  show(4,5,6);//建议函数中定义了几个参数就传递几个实参
    script>

    <script type="text/javascript">
    /*
    函数的细节2:

    */
    function getSum(){
        return 100;
    }
    var sum=getSum();//getSum函数运行,并将返回的结果赋值给sum
    var sum=getSum;//getSum本身是一个函数名,而函数本身在js中就是一个对象,getSum就是这个函数对象的引用
                    //将getSum这个引用的地址赋值给sum.这时sum也指向了这个函数对象
                    //相当于这个函数对象有两个函数名称
    alert("sum="+sum);//打印的时候如果sum指向的是函数对象,那么会将该函数对象的字符串表现形式打印出来
                        //就是该函数的代码定义格式


    script>
body>
html>

<html>
<head>
<meta charset="UTF-8">
<title>Insert title heretitle>
head>
<body>
    <script type="text/javascript">

    /*
    js函数的其他表现形式
    动态函数:使用的是js中内置的一个对象Function
    用的不多,参数列表、函数体都是通过字符串动态指定的
    */
    var add=new Function("x,y","var sum; sum=x+y; return sum;");
    var he=add(4,8);
    alert("he="+he);

    function add2(x,y){
        var sum;
        sum=x+y;
        return sum;
    }

    script>

    <script type="text/javascript">
    /*
    匿名函数:没有名字的函数
    通常是函数的简写形式
    */
    var add3=function(a,b){
        return a+b;
    }
    alert(add3(7,8));
    script>
body>
html>

5、进制转换及for语句的应用


<html>
<head>
<meta charset="UTF-8">
<title>全局方法title>
head>
<body>
    <script type="text/javascript" src="out.js">script>
    <script type="text/javascript">
        /*
        全局方法演示
        */
//      println(parseInt("123")+1);
        var val=parseInt("12abc");//val=12
        println("value="+val);
        /*
        将指定进制格式的字符串转成十进制
        */
        var num=parseInt("110",2);
        println("num="+num);
        var num1=parseInt("0x3c",16);
        println("num="+num);
        //将十进制转成其他进制,使用数字对象完成
        var num3=new Number(6);
        println("num3="+num3.toString(2));

        var num4=60;
        println("num4="+num4.toString(16));
        /*
        js中的特有语句for in
        格式:
        for(变量 in 对象)//对对象进行遍历的语句
        {

        }
        */
        var arr=[32,80,65];
        for(i in arr){
            println("i="+arr[i]);
        }
        println("
"
); var numObj="abc"; for(x in numObj){ println(x); }
script> body> html>

6、对象


<html>
<head>
<meta charset="UTF-8">
<title>js对象title>
head>
<body>
    <script type="text/javascript">
        /*
        object对象:
        toString():将对象编程字符串
        valueOf():返回指定的原始值
        */
        function show(){
            alert("show run");
        }
        alert(show.toString());

    script>
body>
html>

自定义对象


<html>
<head>
<meta charset="UTF-8">
<title>自定义对象title>
head>
<body>
    <script type="text/javascript" src="out.js">script>
    <script type="text/javascript">
    /*
    js自定义对象
    如果想要自定义对象,应该先对对象进行描述
    js是基于对象,不是面向对象的,不具备描述事物的能力
    如果想按照面向对象的思想编写js
    就要先描述,在js中,可以用函数来模拟面向对象的中的描述
    */
    //用js来描述人
    function Person(){//相当于构造器
    //  alert("person run");
    }
    //通过描述进行对象的建立 new
    var p=new Person();
    //动态给p对象添加属性,直接使用p属性名即可
    p.name="zhangsan";
    p.age=29;
    //如果定义的p对象的属性赋值为一个函数,即是给p对象添加一个方法
    p.show=function(){
        alert("show:"+this.name+":"+this.age);
    }
    p.show();

    var obj=new Object();
    obj.name="god father";
    obj.age=2013;
    alert(obj.name+":"+obj.age);
    /*
    function Person(name,age){
        //在给Person对象添加了两个属性
         this.name=name;
         this.age=age;

         this.setName=function(name){
             this.name=name;
         }
         this.getName=function(){
             return this.name;
         }
    }
    var p=new Person("旺财",20);
    p.setName("小强");
    alert(p.getName());
    */
    var pp={
        //定义一些成员
        "name":"小明","age":38,
        "getName":function(){
            return this.name;
        }
    }
    //对象调用成员有两种方式:对象.属性名  对象["属性名"]
    alert(pp.age+":"+pp.getName());
    script>
body>
html>

7、数组


<html>
<head>
<meta charset="UTF-8">
<title>Insert title heretitle>
head>
<body>
    <script type="text/javascript">
    /*
    javascript中的数组演示
    数组用于存储更多的数据:是一个容器
    特点:
        1、长度是可变的
        2、元素的类型是任意的
    建议在使用数组时,存储同一类型的元素,操作起来方便点
    js中的数组定义的两种方式:
    1、var arr=[]; var arr=[3,1,5,8];
    2、使用了javascript中的Array对象来完成的定义
        var arr=new Array();//var arr=[]
        var arr1=new Array(5);//数组定义并且长度是5
        var arr2=new Array{5,6,7}//定义一个数组,元素是5,6,7

    */
    var arr=[23,78,100];
//  alert(typeof(arr));//对象类型object
//  alert("len:"+arr.length);
    //遍历数组
    for(var x=0;x"arr["+x+"]="+arr[x]+"
"
); } script> body> html>

数组的功能


<html>
<head>
<meta charset="UTF-8">
<title>Array基本功能title>
head>
<body>
    <script type="text/javascript" src="out.js">script>
    <script type="text/javascript">
    /*
    演示数组
    */
    var arr=["nba","haha","cba","aaa","abc"];
    var arr2=["qq","xiaoqiang",70];
    println(arr);
    println(arr2);
    //在arr数组上连接一个元素"mm",在连接一个arr2数组
    var newArr=arr.concat("mm",arr2);
    println(newArr);//结果:nba,haha,cba,aaa,abc,mm,qq,xiaoqiang,70
    println(arr.join("-"));//指定数组中元素的连接符连接元素
    //移除数组中的最后一个元素,并返回该元素,pop
    /*
    println("
"); println(arr); println(arr.pop()); println(arr); */
//添加一个元素,并返回该数组的长度 // println(arr.push("a")) //删除并返回第一个元素 // println(arr.shift()); //返回一个数组的一段,不包含最后4的位置元素 // println(arr.slice(2,4)); //数组排序 // println(arr.sort()); //移除相应位置的元素并添加,返回所移除的元素 /* var temp=arr.splice(1,3,"xixi","wang","cai"); println(temp); println(arr); */ //将指定数组元素插入数组开头 println(arr.unshift("uuu")); println(arr);
script> body> html>

栈、队列的模拟


<html>
<head>
<meta charset="UTF-8">
<title>堆栈和队列title>
head>
<body>
    <script type="text/javascript" src="out.js">script>
    <script type="text/javascript">
    /*
    数组练习
    */
    var arr=[];
    //模拟队列结构
    arr.unshift("abc1");
    arr.unshift("abc2");
    arr.unshift("abc3");
    /*
    println(arr.pop());
    println(arr.pop());
    println(arr.pop());
    */
    //模拟堆栈结构
    println(arr.shift());
    println(arr.shift());
    println(arr.shift());

    script>
body>
html>

对数组的操作


<html>
<head>
<meta charset="UTF-8">
<title>Insert title heretitle>
head>
<body>
    <script type="text/javascript">
    /*
    综合练习:
    1、定义功能,完成对数组的最值获取
    2、对数组排序
    3、对数组查找
    4、对数组元素进行反转
    */
    var arr=[66,13,27,35];
    //取最值
    function getMax(arr){
        var max=0;
        for(var x=1;xif(arr[x]>arr[max])
                    max=x;
            }
        return arr[max];
    }
    var maxValue=getMax(arr);
//  alert("maxValue:"+maxValue);
    //排序
    function mysort(arr){
        for(var x=0;x1;x++){
            for(var y=x+1;yif(arr[x]>arr[y]){
                    swap(arr,x,y);
                }
            }
        }

    }
    //数组中的元素位置置换
    function swap(arr,x,y){
        var temp=arr[x];
        arr[x]=arr[y];
        arr[y]=temp;
    }
    function println(val){
        document.write(val+"
"
); } // document.write("排序前:"+arr); println("排序前:"+arr); mysort(arr); println("排序后:"+arr); script> <script type="text/javascript"> /* 3、对数组查找 4、对数组元素进行反转 */ //查找 function searchElement(arr,key){ for(var x=0;xif(arr[x]==key) return x; } return -1; } //折半,必须有前提,必须是有序的数组 function binarySearch(arr,key){ var max,min,mid; min=0; max=arr.length-1; while(min>1; if(key>arr[mid]) min=mid+1 else if(key1; else return mid; } return -1; } //对数组的反转 function reverseArray(arr){ for(var start=0,end=arr.length-1;start"反转后:"+arr); script> body> html>

8、常见对象

Date对象


<html>
<head>
<meta charset="UTF-8">
<title>常见对象Datetitle>
head>
<body>
    <script type="text/javascript" src="out.js">script>
    <script type="text/javascript" >
        /*
        演示js中的日期  Date
        */
        var date=new Date();
        println(date.toLocaleString());//日期和时间
        println(date.toLocaleDateString());//只有日期

        var year=date.getFullYear();
        var month=date.getMonth()+1;
        var day=date.getDate();
        var week=getWeek(date.getDay());
        println(year+"-"+month+"-"+day+"-"+week);

        function getWeek(num){
            var weeks=['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
            return weeks[num];
        }
        //日期对象和毫秒值之间的转换
        var date2=new Date();
        //获取毫秒值  日期对象--->毫秒值
        var time=date2.getTime();
        println("time:"+time);
        //将毫秒值转成日期对象
        //1、new Date(time);//setTime();
        /*
        将日期对象和字符串之间进行转换
        日期对象转成字符串:toLocalString toLocalDateString
        */
        //将字符串转成日期对象,具备指定格式的日期字符串--->毫秒值--->日期对象
        var str_date="9/28/2017";
        var time2=Date.parse(str_date);
        var date3=new Date(time2);
        println(date3.toLocaleDateString());
        /*
        为了简化对象调用内容的书写
        可以使用js中的特有语句with来完成
        格式:
        with(对象){
            在该区域中可以直接使用指定的对象的内容,不需要写对象
        }
        例如:
        with(date){
            var year=getFullYear();
            var month=getMonth()+1;
            var day=getDate();
            var week=getWeek(getDay());
            println(year+"-"+month+"-"+day+"-"+week);
        }
        跟上面的效果一样
        */
    script>
body>
html>

math对象


<html>
<head>
<meta charset="UTF-8">
<title>Math方法演示title>
head>
<body>
    <script type="text/javascript" src="out.js">script>
    <script type="text/javascript">
    /*
    math对象中的方法都是静态的,不需要new,直接调用即可
    */
    var num1=Math.ceil(12.34);//返回大于等于指定参数的最小整数
    var num2=Math.floor(12.34);//返回小于等于指定数据的最大整数
    var num3=Math.round(12.54);//四舍五入
    println("num1="+num1);
    println("num2="+num2);
    println("num3="+num3);

    var num4=Math.pow(10,2);//平方
    println("num4="+num4);

    println("
"
); for(var x=0;x<10;x++){ // var num=Math.floor(Math.random()*10+1);//返回1-10之间的随机数 var num=parseInt(Math.random()*10+1);//返回由字符串转换得到的整数 println(num); }
script> body> html>

你可能感兴趣的:(java)