JavaScript

*1、定义:运行在游览器上的脚本语言

1、在HTML中嵌入Js代码第一种方式

<body>
        <!--1、实现功能:用户点击按钮 弹出消息框
            2、JS是一门时间驱动型的编程语言 依靠时间去驱动 然后执行相对应的程序
               在JS中有很多事件
               1)鼠标单击 click
               2)任何事件都会对应一个事件 onclick
               【注意:事件和事件句柄的区别:事件句柄是在事件单词前添加一个on
                 事件句柄是以HTML标签的属性存在的】
            3、onclick="js代码"  -->
        <input type="button" value="Hello" onclick="window.alert('Hello')"/>
        <input type="button" value="Hello" onclick="alert('Hello')"/>
        <input type="button" value="Hello" onclick="alert('Hello')"/>
</body>

3、引入外部js文件 src引入 href 引用

window.alert("hello world!");
<body>
        <!--在需要的位置引入js脚本文件-->
        <script type="text/javascript" src="嵌入3_.js"></script>
</body>

4、js变量

var 变量名;

变量名 = 值;

javascript 是一种弱类型语言 没有编译阶段 一个变量可以随意赋值

var i =100;

i = "uuu";

i = new Object();

*2、函数

1) js 中的函数不需要指定返回值类型

function 函数名(形参列表){

函数体;

}

function sum(a,b)

{ alert(a + b); }

<body>
<script>
    var i;
    alert("i =" + i);
    function sum(a, b) {
        alert("总和=" + a + b);
    }
</script>
<input type="button" value="计算两数求和" onclick="sum(1,3);"/>
</body>

2)js中同名函数 后面的函数会覆盖前面的函数

function uu(a,s){
   alert(a+s);
}
function uu(){
   alert("ioioioio");
}
uu(111111);//ioioioio

*3、全局变量和局部变量

1)全局变量:

声明在函数体外的变量属于全局变量 其生命周期是:

游览器打开时声明 关闭时销毁 较耗费内存空间

<script>
    //全局变量
    var i = 100;
    alert(i);
</script>

2)局部变量:

声明在函数体中的变量 包括一个函数的形参都是局部变量 其生命周期是:

函数开始执行时开辟局部变量的内存空间 函数执行结束后 局部变量的内存空间释放 生命周期较短

<script>
    //局部变量
    function uu() {
        var i = 400;
        alert("i=" + i)
    }
    uu();
</script>

3)一个变量在声明时 没有使用var关键字 那么无论这个变量在哪声明的 都属于全局变量

<script>
    function yu(){
        name = "daming";
    }
    yu();
    alert(name);//daming
</script>

*4、数据类型

1)原始数据类型:Undefined Number String Boolean Null

2)引用类型:Object 及其子类

3) ES6之后加入 Symbol

4)JS中有一个运算符 typeof 可以在运行阶段动态获取变量的数据类型

<script>
function sum(q,a){
    if (typeof q =="number" && typeof a =="number"){
        return q + a;
    }
    alert("类型不符合条件")
}
var re = sum("qwe",1231);
alert(re);//;类型不符合条件
</script>

5)Number类型:

-1 0 1 2 3.14 100 .............NaN Infinity

整数 小数 正数 负数 不是数字 无穷大都是Number类型

6)关于isNan函数:is Not a Number

true 表示结果不是一个数字 false表示结果是一个数字

7)parseInt():可以将字符串自动转成数字 向下 整数位

8)parsefloat(): 字符串转成数字

9)Math.ceil()向上取整

10)Boolean类型

11)String类型

<script>
    /*JS中创建字符串的两种方式:*/
    var w = "wqeqw";
    alert(typeof w);//string

    var q = new String("qwe");
    alert(typeof q);//Object

    //获取字符串长度
    alert(w.length);// 5
    alert(q.length);// 3
</script>
<script>
    /*JS中创建字符串的两种方式:*/
    var w = "wqeqw";
    alert(typeof w);//string

    var q = new String("qwe");
    alert(typeof q);//Object

    //获取字符串长度
    alert(w.length);// 5
    alert(q.length);// 3

    alert("http://oooooppppp".indexOf("http"));//0
    alert("http://oooooppppp".indexOf("https"));//-1  (未出现)

    //判断一个字符串中是否出现某个子字符串
    alert("http://oooooppppp".indexOf("https") >= 0 ? "出现" : "未出现");//不包含

    //replace(注意:只替换第一个)
    alert("name=value%name=value%name=value%name=value".replace("%","与"));
    
</script>

substr 和 substring 去区别

//substr 和 substring的区别
alert("qwertyui".substr(2,4));//  ert
alert("qwertyui".substring(2,4));//  er 不包含endIndex

*5、定义类和创建对象

1)JS中类的定义和构造函数的定义是放在一起的 类的定义同时又是一个构造函数的定义

<script>
    /*定义类*/
    function W(){
        alert("qqqq");
    }
    /*调用方法*/
    W();

    /*创建对象*/
    var w = new W();
    alert(w)
</script>
<script>
    function Student(a, c, v) {
        this.name = a;
        this.gender = c;
        this.age = v;
    }

    var s1 = new Student("大明", '男', 12);

    alert(s1.name);
    alert(s1.gender);
    alert(s1.age);
    alert(s1["age"]);
</script>

2)prototype 扩展函数 给类添加方法/函数

<script>
    function Product(id,name,size) {
        this.id = id;
        this.name = name;
        this.size = size;
    }

    var pro = new Product(1,"durian",10);

    //可以通过prototype这个属性来给类动态扩展属性及函数
    Product.prototype.getname = function(){
        return this.name;
    }

    //调用后期扩展的getname函数
    var pname = pro.getname();
    alert(pname);
</script>

9、 == 和 ===

*6、事件

1)第一种方式 在标签中使用句柄

<body>
<script>
    function run() {
        alert("跑");
    }
</script>
<!--注册事件第一种方式:直接在标签中使用句柄-->
<input type="button" value="点击" οnclick="run()"/>
</body>

2)第二种方式

1、匿名函数

2、一步写完

document.getElementById("注册3").onclick = function() {
    alert("注册3");
}
<body>
<input type="button" value="注册" id="注册"/>
<input type="button" value="注册2" id="注册2"/>
<input type="button" value="注册3" id="注册3"/>

<script>
    function sleep() {
        alert("睡觉")
    }
    /*注册的第二种方式  使用纯JS代码完成事件的注册*/
    /*第一步 获取按钮对象 (document 内置对象 直接使用 代表HTML整个页面)*/
    var button1 = document.getElementById("注册");
    /*第二步 给对象onclick属性赋值*/
    button1.onclick = sleep;//千万不能加小括号

    /*匿名函数*/
    var button2 = document.getElementById("注册2");
    button2.onclick = function() {//这个函数没有名字 叫做匿名函数 同样也是一个回调函数
        alert("...................")
    }

    /*一步写完*/
    document.getElementById("注册3").onclick = function() {
        alert("注册3");
    }
</script>
</body>

1、load (解决顺序问题 保证页面加载完成后)

<body>
<script>
    //页面加载过程中 将a函数注册给load事件
    //页面加载完毕后 load事件发生 此时执行回调函数a
    //回调函数a执行过程中 把b函数注册给id = "btn" 的click事件
    //当id = "btn"的节点 发生click事件之后 b函数被调用并被执行
    window.onload = function(){
        document.getElementById("btn").onclick = function(){
            alert("hellewwwd");
        }
    }
</script>

<input type="button" value="heh" id="btn"/>
</body>

2、回车 onkeydown

<body>
<script>
    /*回车 */
    window.onload = function(){
        var name = document.getElementById("name");
        name.onkeydown = function(event){
            if (event.keyCode === 13){
                alert("正在进行验证...")
            }
        }
    }
</script>
<input type="text" id="name"/>
</body>

3、void运算符

4、获取文本框的value

<body>
<script>
    //页面加载
    window.onload = function () {
    //匹配按钮
        var btn = document.getElementById("btn");
        btn.onclick = function(){
            //获取文本框内输入的内容
            var usernameelt = document.getElementById("username");
            var username = usernameelt.value;
            alert(username);
        }
    }
</script>
<input type="text" id="username"/>
<input type="button" id="btn" value="获取name"/>
</body>

5、innerHTML

<head>
    <meta charset="UTF-8">
    <title>操作div和span</title>
    <style type="text/css">
        #div1{
            background-color: red;
            width:200px;
            height:200px;
            border:1px solid black;
            top: 100px;
            left: 100px;
        }
    </style>
</head>
<body>
<script>
    //1、页面加载完毕 执行回调函数
        window.onload = function(){
            var btn = document.getElementById("btn");
            btn.onclick = function(){
                //2、设置div内容
                //3、获取div对象
                var divElt = document.getElementById("div1");
                //4、使用innerHTML属性来设置元素内部的内容
                divElt.innerHTML="qdwdqwuo";
            }
        }
</script>
<input type="button" value="设置div中的内容" id="btn"/>
        <div id="div1"></div>
</body>

*7、正则表达式

1、正则表达式:Regular Expression 主要用在字符串格式匹配上

2、常见的正则表达式符号

1、正则表达式 验证注册邮箱

<body>
        <script>
            window.onload = function(){
                document.getElementById("btn").onclick = function() {
                    var email = document.getElementById("email").value;
                    var emailReg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                    var ok = emailReg.test(email);
                    if (ok){
                        document.getElementById("emailError").innerText = "合法";
                    }else {
                        document.getElementById("emailError").innerText = "不合法";
                    }

                }
            }
        </script>
<input type="text" id="email"/>
<span id="emailError" style="color:red"></span>
<br/>
<input type="button" id="btn" value="验证"/>
</body>

8、表单注册

1、用户名不能为空 2、用户名必须在6-14位之间 3、用户名只能有数字和字母组成,不能含有其它符号(正则表达式)密码和确认密码一致,邮箱地址合法。 4、统一失去焦点验证 5、错误提示信息统一在span标签中提示,并且要求字体12号,红色。 6、文本框再次获得焦点后,清空错误提示信息,如果文本框中数据不合法要求清空文本框的value最终表单中所有项均合法方可提交

9、系统时间

1、获取系统当前时间

<script type="text/javascript">
    /*关于JS中内置的支持类: Date 可以用来获取时间/日期*/
    /*1、获取系统当前时间*/
    var nowTime = new Date();
    /*转换成具有本语言环境的日期格式*/
    nowTime = nowTime.toLocaleString();
    /*输出*/
    document.write(nowTime);
    document.write("<br>")
    document.write("<br>")
​
    /*2、定制获取年月日信息*/
    var t = new Date();
    var year = t.getFullYear();//返回年信息 以全格式返回
    var month = t.getMonth();//月份是:0-11
    var day = t.getDay();//获取一周中的第几天
    document.write(year);
    document.write(month);
    document.write(day);
​
    document.write("<br>")
    document.write("<br>")
    /*3、获取日信息*/
    var day1 = t.getDate();
    document.write(day1);
</script>

2、显示实时当前时间

<body>
<script type="text/javascript">
    function displayTime() {
        var time = new Date();
        var strTime = time.toLocaleString();
        document.getElementById("timeDiv").innerHTML = strTime;
    }
​
    /*每隔1秒 调用一次displayTime()函数*/
    function startTime() {
        v = window.setInterval("displayTime()", 1000);
    }
​
    function stopTime() {
        window.clearInterval(v);
    }
​
</script>
<input type="button" value="显示系统时间" onclick="startTime();"/>
<br>
<br>
<input type="button" value="系统时间停止" onclick="stopTime();"/>
<div id="timeDiv"></div>
</body>

10、内置对象Array

<body>
    <script>
        /*创建数组 数据类型任意*/
        var arr = [];
        alert(arr.length);
​
        var arr2 = [1,2,3,4,"das",2.333];
        alert(arr2.length);
​
        /*数组不会越界 数组会自动扩容*/
        arr[7] = "qwe";
        for(var i = 0; i < arr.length; i++){
            document.writeln(arr2[i]);
        }
​
        /*方法:*/
        var a = [1,2,3,"we"]
        //将数组中每个元素用这个连接上
        var str = a.join("----");//1----2----3----we
        alert(str);
​
        /*push压栈  在数组末尾添加一个元素*/
        a.push(19)
​
        /*pop弹栈  将数组末尾的元素弹出*/
        var w = a.pop()
        alert(w)
​
        /*反转数组*/
        a.reverse()
    </script>
</body>

11、JSON (轻量级的数据交换格式)

1、eval函数 : 将字符串当做一段代码进行执行

<body>
<script>
    /*eval函数:将字符串当做一段JS代码解释并执行*/
    window.eval("var i = 10");
    alert("i" + i);

    /*java连接数据库 查询数据后 将数据在java程序中拼接成JSON格式的“字符串” 将JSON格式的字符串响应到游览器
    * 也是就是说java响应到游览器上的仅仅是JSON格式的字符串 不是JSON对象
    * 于是需要使用eval函数将JSON格式的字符串转换成JSON对象*/

    /*这是java程序发过来的json格式的字符串*/
    var fromJava = "{\"name\":\"张三\",\"password\":\"123\"}";
    /*将以上json格式的字符串转换成json对象*/
    window.eval("var Obj = " + fromJava)

    /*访问json对象*/
    alert(Obj.name + "," + Obj.password);//在前端取数据
</script>
</body>
<body>
        <!--JSON 轻量级的数据交换格式-->
<script>
    /*JSON数组*/
    var students = [
        {"sno":"001","sname":"张三","sex":"男"},
        {"sno":"002","sname":"李四","sex":"男"},
        {"sno":"003","sname":"王五","sex":"男"}
    ]
    /*遍历*/
    for (var i = 0; i < students.length; i++) {
        var stuObj = students[i];
        alert(stuObj.sno + "," + stuObj.sname + "," + stuObj.sex)
    }
</script>
</body>
<body>
<script>
    var user = {
        "usercode": 1,
        "username": "张三",
        "sex": "男",
        "address": {
            "city": "北京",
            "street": "大兴区"
        },
        "hobby": ["a", "b", "c"]
    };

    /*访问人名及居住的城市*/
    alert(user.username + "居住在" + user.address.city);

    /*请自行设计JSON数据的格式  这个JSON格式的数据可以描述整个班级中每一个学生的信息及总人数的信息*/
    var students = {
        "total": 3,
        "students": [
            {"sname": "张三", "birth": "10", "sex": "男"},
            {"sname": "李四", "birth": "10", "sex": "男"},
            {"sname": "王五", "birth": "10", "sex": "男"}
        ]
    };

</script>
</body>
<body>
<script type="text/javascript">
    var data = {
        "total": 4,
        "emps": [
            {"empno": 1010, "ename": "大", "sal": 300000},
            {"empno": 1020, "ename": "小", "sal": 200000},
            {"empno": 1030, "ename": "大1", "sal": 100000},
            {"empno": 1040, "ename": "洋2", "sal": 500000}
        ]
    };

    window.onload = function () {
        var displayBtnElt = document.getElementById("displayBtn");
        displayBtnElt.onclick = function () {
            /*解析上面的数据 然后放到下面的table中*/
            var emps = data.emps;
            var html = "";
            for (var i = 0; i < emps.length; i++) {
                var emp = emps[i];
                html += "<tr>";
                html += "<td>" + emp.empno + "</td>";
                html += "<td>" + emp.ename + "</td>";
                html += "<td>" + emp.sal + "</td>";
                html += "</tr>";
            }
            document.getElementById("tbody").innerHTML = html;
            document.getElementById("count").innerHTML = data.total;
        }
    }
    /*把数据展示到table中*/
</script>
<input type="button" value="显示员工信息列表" id="displayBtn"/>
<h2>员工信息列表</h2>
<hr>
<table border="1px" width="50%">
    <tr>
        <th>员工编号</th>
        <th>员工姓名</th>
        <th>员工薪资</th>
    </tr>
    <tbody id="tbody">

    </tbody>
</table>
总共<span id="count">0</span>条数据
</body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值